Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Alter Hase
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 |
// Code... pContext->IASetVertexBuffers(&buffer1,...); pContext->IASetVertexBuffers(&buffer2,...); // Code... ClearRenderTargetView(); // DX-Methoden Draw(); Present(); |
C-/C++-Quelltext |
|
1 2 3 4 5 |
ClearRenderTargetView(); pContext->IASetVertexBuffers(&buffer1,...); pContext->IASetVertexBuffers(&buffer2,...); Draw(); Present(); |
Alter Hase
C-/C++-Quelltext |
|
1 2 3 4 5 6 |
virtual void release(){ if(valid){ valid = false; pBuffer->Release(); } } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Context::~Context(){ for(VertexBuffer* pBuffer : _VertexBuffers) delete pBuffer; for(IndexBuffer* pBuffer : _IndexBuffers) delete pBuffer; pSwapChain->Release(); pRTV->Release(); pDevice->Release(); pContext->Release(); // TODO: // Keep track of created resources and delete them then. } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 |
if(_VertexBuffers[buffer_id]->isValid()) // Die Vertexbuffer werden in einem "std::vector" gespeichert. pContext->IASetVertexBuffers(0, 1, &(_VertexBuffers[buffer_id]->pBuffer), &stride, // sizeof(float)*7, ja wird noch korrigiert &offset); // 0 |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
Vertex triangle[] = { {0.0f, 0.5f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f}, {0.45f, -0.5, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f}, {-0.45f, -0.5f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f} }; Vertex quad[] = { {-0.5f, 0.5f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f}, {0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f}, {0.5f, -0.5f, 0.0f, 0.0f, 0.0f, 1.0f, 1.0f}, {-0.5f, -0.5f, 0.0f, 0.55f, 0.26f, 0.68f, 1.0f} }; unsigned int IndexBuffer[] = { 0, 1, 3, 1, 2, 3 }; try{ Window window(L"Direct3D 11", 600, 400); Event event; pContext = getContext(&window); int buffer = pContext->createVertexBuffer(&triangle, sizeof(Vertex)*3); int quadsv = pContext->createVertexBuffer(&quad, sizeof(Vertex) * 4); int quadsi = pContext->createIndexBuffer(&IndexBuffer, sizeof(unsigned int) * 6); while(event.eventID != Event::EventID::Closed){ pContext->clearFrame(); pContext->setVertexBuffer(buffer); // pContext->draw(3, 0); pContext->setVertexBuffer(quadsv); pContext->setIndexBuffer(quadsi); pContext->drawIndexed(6, 0, 0); pContext->present(); window.pollEvent(event); } delete pContext; } catch(std::runtime_error e){ std::cout << "An exception has occured!" << std::endl << e.what() << std::endl; } catch(...){ std::cout << "An unkown exception has occured!" << std::endl; } |
Alter Hase
C-/C++-Quelltext |
|
1 2 3 |
ModelClass::~ModelClass() { } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
void ModelClass::ShutdownBuffers() { //Release the index buffer if (m_indexBuffer) { m_indexBuffer->Release(); m_indexBuffer = nullptr; } //Release the vertex buffer if (m_vertexBuffer) { m_vertexBuffer->Release(); m_vertexBuffer = nullptr; } return; } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 |
void GraphicsClass::Shutdown() { if (m_D3D) { m_D3D->Shutdown(); m_D3D = nullptr; } return; } |
Alter Hase
Alter Hase
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
bool create(ID3D11Device* pDevice, const void* pData, int size) { D3D11_BUFFER_DESC bf_desc = {}; bf_desc.Usage = D3D11_USAGE_DEFAULT; bf_desc.ByteWidth = size; bf_desc.BindFlags = D3D11_BIND_VERTEX_BUFFER; bf_desc.CPUAccessFlags = 0; bf_desc.MiscFlags = 0; D3D11_SUBRESOURCE_DATA res_data = {}; res_data.pSysMem = pData; res_data.SysMemPitch = 0; res_data.SysMemSlicePitch = 0; HRESULT hr = pDevice->CreateBuffer( &bf_desc, &res_data, &pBuffer ); valid = SUCCEEDED(hr); return valid; } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 |
int Context::createVertexBuffer(const void* pData, const int size){ VertexBuffer* pBuffer = new VertexBuffer(); if(pBuffer->create(pDevice, pData, size)){ _VertexBuffers.push_back(pBuffer); return _VertexBuffers.size() - 1; } else return -1; } |
Werbeanzeige