0 Replies - 941 Views - Last Post: 10 December 2012 - 04:00 PM Rate Topic: -----

#1 Mallaboro  Icon User is offline

  • D.I.C Head

Reputation: 0
  • View blog
  • Posts: 55
  • Joined: 26-April 10

Direct X 11, TRIANGLESTRIP faces not going where they're supposed

Posted 10 December 2012 - 04:00 PM

Hi-o,

Posted Image

I'm in a bit of a pickle. I've been at this for a few hours now and am having trouble getting my cube faces flat.

I've noticed when I change the base vertex location on d3d11DevCon->DrawIndexed(gameObject[i].indicesCount, gameObject[i].indicesStart, 0), from 0 to 2, the front faces of my cubes are perfectly flat as they should be, but this further distorts all other faces.

int InitObjects()
{
	gameObject[0].indicesCount = 36; //ARRAYSIZE(indices);
	gameObject[0].zPosition =-0.5f;
	gameObject[0].TexturePath = L"texture.jpg";
	gameObject[0].Origin = XMVectorSet(0.0f, 0.1f, 0.0f, 0.0f);
	gameObject[0].rotationSpeed = 0.00006;
	gameObject[1].indicesCount = 36; //ARRAYSIZE(indices);
	gameObject[1].xPosition = -3.0f;
	gameObject[1].zPosition =-0.5f;
	gameObject[1].TexturePath = L"texture2test.jpg";
	gameObject[1].Origin = XMVectorSet(0.0f, 0.0f, 1.0f, 0.0);
	gameObject[1].rotationSpeed = 0.00012;
	gameObject[2].indicesCount = 36; //ARRAYSIZE(indices);
	gameObject[2].xPosition = 3.0f;
	gameObject[2].zPosition =-0.5f;
	gameObject[2].TexturePath = L"StoneBlock.jpg";
	gameObject[2].Origin = XMVectorSet(0.0f, 0.0f, 1.0f, 0.0);
	gameObject[2].rotationSpeed = 0.00012;

	return 1;
}



Draw()
{
	//Clear our backbuffer
	float bgColor[4] = {(0.0f, 0.0f, 0.0f, 0.0f)};
	d3d11DevCon->ClearRenderTargetView(renderTargetView, bgColor);

	//Refresh the Depth/Stencil view
	d3d11DevCon->ClearDepthStencilView(depthStencilView, D3D11_CLEAR_DEPTH|D3D11_CLEAR_STENCIL, 1.0f, 0);

	for(int i = 0; i < gameObject.size(); i++)
	{
		WVP = gameObject[i].xmmatrix * camView * camProjection;
		cbPerObj.WVP = XMMatrixTranspose(WVP);	
		d3d11DevCon->UpdateSubresource( cbPerObjectBuffer, 0, NULL, &cbPerObj, 0, 0 );
		d3d11DevCon->VSSetConstantBuffers( 0, 1, &cbPerObjectBuffer );
		d3d11DevCon->PSSetShaderResources( 0, 1, &gameObject[i].CubesTexture);
		d3d11DevCon->PSSetSamplers( 0, 1, &CubesTexSamplerState );

		////base version location = number of triangles used per object
		d3d11DevCon->DrawIndexed(gameObject[i].indicesCount, gameObject[i].indicesStart, 0);

	}

	SwapChain->Present(0, 0);
}



struct Vertex	//Overloaded Vertex Structure
	{
		Vertex(){}
		Vertex(float x, float y, float z, float u, float v) : pos(x,y,z), texCoord(u, v){}
		XMFLOAT3 pos;
		XMFLOAT2 texCoord;
	};


 Vertex v[] =
 {

	#pragma region pallette
	  
  // Front Face
  Vertex(-1.0f, -1.0f, -1.0f, 0.0f, 1.0f),
  Vertex(-1.0f,  1.0f, -1.0f, 0.0f, 0.0f),
  Vertex( 1.0f,  1.0f, -1.0f, 1.0f, 0.0f),
  Vertex( 1.0f, -1.0f, -1.0f, 1.0f, 1.0f),

  // Back Face
  Vertex(-1.0f, -1.0f, 1.0f, 1.0f, 1.0f),
  Vertex( 1.0f, -1.0f, 1.0f, 0.0f, 1.0f),
  Vertex( 1.0f,  1.0f, 1.0f, 0.0f, 0.0f),
  Vertex(-1.0f,  1.0f, 1.0f, 1.0f, 0.0f),

  // Top Face
  Vertex(-1.0f, 1.0f, -1.0f, 0.0f, 1.0f),
  Vertex(-1.0f, 1.0f,  1.0f, 0.0f, 0.0f),
  Vertex( 1.0f, 1.0f,  1.0f, 1.0f, 0.0f),
  Vertex( 1.0f, 1.0f, -1.0f, 1.0f, 1.0f),

  // Bottom Face
  Vertex(-1.0f, -1.0f, -1.0f, 1.0f, 1.0f),
  Vertex( 1.0f, -1.0f, -1.0f, 0.0f, 1.0f),
  Vertex( 1.0f, -1.0f,  1.0f, 0.0f, 0.0f),
  Vertex(-1.0f, -1.0f,  1.0f, 1.0f, 0.0f),

  // Left Face
  Vertex(-1.0f, -1.0f,  1.0f, 0.0f, 1.0f),
  Vertex(-1.0f,  1.0f,  1.0f, 0.0f, 0.0f),
  Vertex(-1.0f,  1.0f, -1.0f, 1.0f, 0.0f),
  Vertex(-1.0f, -1.0f, -1.0f, 1.0f, 1.0f),

  // Right Face
  Vertex( 1.0f, -1.0f, -1.0f, 0.0f, 1.0f),
  Vertex( 1.0f,  1.0f, -1.0f, 0.0f, 0.0f),
  Vertex( 1.0f,  1.0f,  1.0f, 1.0f, 0.0f),
  Vertex( 1.0f, -1.0f,  1.0f, 1.0f, 1.0f),


	#pragma endregion
 };

 DWORD indices[] = 
 {
	#pragma region pallette

  // Front Face
  0,  1,  2,
  0,  2,  3,

  // Back Face
  4,  5,  6,
  4,  6,  7,

  // Top Face
  8,  9, 10,
  8, 10, 11,

  // Bottom Face
  12, 13, 14,
  12, 14, 15,

  // Left Face
  16, 17, 18,
  16, 18, 19,

  // Right Face
  20, 21, 22,
  20, 22, 23

	#pragma endregion
 };
	
	InitObjects();

...
indexBufferDesc.ByteWidth = sizeof(DWORD) * 12 * 3;
...
vertexBufferDesc.ByteWidth = sizeof( Vertex ) * ARRAYSIZE(v);
...
d3d11DevCon->IASetPrimitiveTopology( D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP);



I believe that's everything that could be possibly related to the problem.

Is This A Good Question/Topic? 0
  • +

Page 1 of 1