Jump to content
  • Advertisement

Belfa96

Member
  • Content Count

    2
  • Joined

  • Last visited

Community Reputation

0 Neutral

About Belfa96

  • Rank
    Newbie

Personal Information

  • Interests
    Programming

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. I've got a single vertex buffer and an index buffer for a cube in Directx9. I now want to generate a LPD3DXMESH object from them, so that I can manage mouse picking and other stuff with the cube model. How can I achieve this? Here's the code of my vertex and index buffers: CUSTOMVERTEX vertices[] = { { -3.0f, 3.0f, -3.0f, D3DCOLOR_XRGB(0, 0, 0), }, { 3.0f, 3.0f, -3.0f, D3DCOLOR_XRGB(0, 0, 0), }, { -3.0f, -3.0f, -3.0f, D3DCOLOR_XRGB(0, 0, 0), }, { 3.0f, -3.0f, -3.0f, D3DCOLOR_XRGB(0, 0, 0), }, { -3.0f, 3.0f, 3.0f, D3DCOLOR_XRGB(0, 0, 0), }, { 3.0f, 3.0f, 3.0f, D3DCOLOR_XRGB(0, 0, 0), }, { -3.0f, -3.0f, 3.0f, D3DCOLOR_XRGB(0, 0, 0), }, { 3.0f, -3.0f, 3.0f, D3DCOLOR_XRGB(0, 0, 0), }, }; d3ddev->CreateVertexBuffer(8 * sizeof(CUSTOMVERTEX), 0, CUSTOMFVF, D3DPOOL_MANAGED, &vertex_buffer, NULL); VOID* pVoid; vertex_buffer->Lock(0, 0, (void**)&pVoid, 0); memcpy(pVoid, vertices, sizeof(vertices)); vertex_buffer->Unlock(); short indices[] = { 0, 1, 2, 2, 1, 3, 4, 0, 6, 6, 0, 2, 7, 5, 6, 6, 5, 4, 3, 1, 7, 7, 1, 5, 4, 5, 0, 0, 5, 1, 3, 7, 2, 2, 7, 6, }; d3ddev->CreateIndexBuffer(36 * sizeof(short), 0, D3DFMT_INDEX16, D3DPOOL_MANAGED, &index_buffer, NULL); index_buffer->Lock(0, 0, (void**)&pVoid, 0); memcpy(pVoid, indices, sizeof(indices)); index_buffer->Unlock();
  2. I'm a total beginner with Directx/3D programming. I need help with implementing hardware instancing on Directx 11. I'm trying to render multiple cubes on the screen, to create some sort of Minecraft-esque voxel engine. The problem is, I don't know where to start to achieve this. This is how my "render frame" function looks: void RenderFrame(void) { D3DXMATRIX matView, matProjection; D3DXMATRIX matFinal; // create a view matrix D3DXMatrixLookAtLH(&matView, &D3DXVECTOR3(0.0f, 9.0f, 24.0f), // the camera position &D3DXVECTOR3(0.0f, 0.0f, 0.0f), // the look-at position &D3DXVECTOR3(0.0f, 1.0f, 0.0f)); // the up direction // create a projection matrix D3DXMatrixPerspectiveFovLH(&matProjection, (FLOAT)D3DXToRadian(45), // field of view (FLOAT)SCREEN_WIDTH / (FLOAT)SCREEN_HEIGHT, // aspect ratio 1.0f, // near view-plane 100.0f); // far view-plane // create the final transform matFinal = matView * matProjection; // clear the back buffer to a deep blue devcon->ClearRenderTargetView(backbuffer, D3DXCOLOR(0.0f, 0.2f, 0.4f, 1.0f)); // clear the depth buffer devcon->ClearDepthStencilView(zbuffer, D3D11_CLEAR_DEPTH, 1.0f, 0); // select which vertex buffer to display UINT stride = sizeof(VERTEX); UINT offset = 0; devcon->IASetVertexBuffers(0, 1, &pVBuffer, &stride, &offset); devcon->IASetIndexBuffer(pIBuffer, DXGI_FORMAT_R32_UINT, 0); // select which primtive type we are using devcon->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST); // draw the Hypercraft devcon->UpdateSubresource(pCBuffer, 0, 0, &matFinal, 0, 0); devcon->DrawIndexed(24, 0, 0); // switch the back buffer and the front buffer swapchain->Present(0, 0); } Notice that there's a single vertex buffer containing the verteces of a cube, and index buffer containing its indeces. I want to render many (5000+) cubes on the screen at once on a single draw call, without performance issues, so I know instancing is the way to go, but I don't know how to implement it in my code. What changes do I need to do to my code in order to display multiple instances of the cube? Thanks in advance!
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!