DirectX:从结构数组绘制多维数据集
DirectX: Drawing a cube from struct array
我正在创建一个游戏,并希望在窗口中绘制一个立方体。我完成了一个工作函数,该函数用 obj 文件的顶点内容填充VERTEX
结构。但是,将输出结构传递到缓冲区中似乎会输出 1 到 2 个可见顶点(在 D3D_PRIMITIVE_TOPOLOGY_POINTLIST
下,用于调试目的),而整个结构是可打印的。
由于我正在传递原始顶点,我还需要知道什么吗?(使用 DX11)
(绘制三角形。正方形似乎画了一个三角形。(在D3D_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP
下))
编辑:
objv= GetObjData(FilePath, 1);
VERTEX *Cup = new VERTEX[objv.size()];
Cup = CreateVertexDS(objv, 1.0f, 1.0f, 1.0f, 1.0f);
int Cupsize=objv.size();
ObjSz=Cupsize; //Debugging purposes, sets a global variable: # of array elements.
顶点被引入,
D3D11_BUFFER_DESC BufferDescription;
ZeroMemory(&BufferDescription, sizeof(BufferDescription));
BufferDescription.Usage =D3D11_USAGE_DYNAMIC;
BufferDescription.ByteWidth =sizeof(VERTEX)*ObjSz; //# of element from obj file.
BufferDescription.BindFlags =D3D11_BIND_VERTEX_BUFFER;
BufferDescription.CPUAccessFlags =D3D11_CPU_ACCESS_WRITE;
BufferDescription.MiscFlags =0;
D3D11_SUBRESOURCE_DATA SRData;
ZeroMemory(&SRData, sizeof(SRData));
SRData.pSysMem=⋓
Compile_Monitor = Device->CreateBuffer(&BufferDescription, &SRData, &D3DBuffer);
if(FAILED(Compile_Monitor))
{
MessageBox(hWnd, L"CreateBuffer() failed. Check for: n Possible Bad or NULL value in D3D11_BUFFER_DESC struct.",
L"Program Error!",
MB_OK);
PostQuitMessage(0);
}
D3D11_MAPPED_SUBRESOURCE MappedResource;
Compile_Monitor = DeviceContext->Map(D3DBuffer, NULL, D3D11_MAP_WRITE_DISCARD, NULL, &MappedResource);
if(FAILED(Compile_Monitor))
{
MessageBox(hWnd, L"Map() failed.",
L"Program Error!",
MB_OK);
PostQuitMessage(0);
}
memcpy(MappedResource.pData, &Cup, sizeof(Cup));
DeviceContext->Unmap(D3DBuffer, NULL);
}
数据呈现:
void Render(){
float ColorBlue[] = {0.4f,0.4f,0.4f,1.0f};
DeviceContext->ClearRenderTargetView(RenderTargetView,ColorBlue);
UINT stride=sizeof(VERTEX);
UINT Offset=0;
DeviceContext->IASetVertexBuffers(0,1,&D3DBuffer,&stride,&Offset);
DeviceContext->IASetPrimitiveTopology(D3D_PRIMITIVE_TOPOLOGY_POINTLIST);
DeviceContext->Draw(ObjSz,0);
Swapchain->Present(0,0);
}
如果问题出在加载 obj 文件,请查看以下内容: http://rastertek.com/dx11tut08.html。 这个特定示例从 obj 文件加载数据并将其输出为自己的文件格式,但 ReadFileCounts
和 LoadDataStructures
函数的组合应该完全符合您的要求。 只是fin.close();
和fout.close();
之间的任何东西 LoadDataStructures
.
如果问题是渲染VERTEX
结构,我也需要它的代码。
相关文章:
- 如何实现高效的算法来计算大型数据集的多个不同值?
- HDF5Cpp 扩展复合数据集超板问题
- HDF5 简单读取数据集失败
- std::bad_alloc 在大数据集的 Dijkstra 计算期间
- C++中的多维数据集:从 std::vector 的 2D 数据到 std::vector 的 2D 网格的最干净方法?
- C++创建空 HDF5 文件而不是数据集的代码
- 跨线程共享数据集与拆分每个线程的数据
- 多维数据集ai中的ai_float是什么
- 适用于频繁更改的大型数据集的最佳数据结构
- 将数据集从 R 传递到C++(使用 .呼叫)
- 将数据集几乎平均分配给工作线程
- 我将 c++ 矢量数据集转换为 c 数组.我将相同的数据集传递到一个应该给出相同输出的函数中
- 使用 194 点海伦数据集训练 DLib 形状预测器
- 现代 OpenGL 多维数据集旋转未按预期工作
- 数据集(和样本)何时在 boost::test 中销毁?
- 从数据集 Blob 字段中打开和编辑文件
- 用于创建 HDF5 数据集的 4 维 c++ 数组的动态内存分配
- OpenGL 第一个多维数据集渲染不起作用
- 一个HDF5文件中有多少个数据集
- DirectX:从结构数组绘制多维数据集