|

300精币
易语言中调用D3D11 COM接口,传递结构体太坑逼了
解决了一个问题又来一个问题
帮我看看参数哪出错了,感激不尽
下面是相关代码
|
D3D11_INPUT_ELEMENT_DESC | | |
SemanticName | 整数型 | | | SemanticIndex | 整数型 | | | Format | 整数型 | | | InputSlot | 整数型 | | | AlignedByteOffset | 整数型 | | | InputSlotClass | 整数型 | | | InstanceDataStepRate | 整数型 | | |
|
ID3D11Device_CreateInputLayout | 整数型 | | |
this | 整数型 | | | | pInputElementDescs | D3D11_INPUT_ELEMENT_DESC | | | | NumElements | 整数型 | | | | pShaderBytecodeWithInputSignature | 整数型 | | | | BytecodeLength | 整数型 | | | | ppInputLayout | 整数型 | | | | 置入代码 ({ 62, 139, 69, 8, 139, 0, 93, 255, 96, 44 }) 返回 (0 )下边是调用参数: 重定义数组 (layout, 假, 2 )byte = 编码转换. 文本到UTF8 (“POSITION”)layout [1 ].SemanticName = 取指针_字节集型 (byte )layout [1 ].SemanticIndex = 0 layout [1 ].Format = #DXGI_FORMAT_R32G32B32_FLOAT layout [1 ].InputSlot = 0 layout [1 ].AlignedByteOffset = 0 layout [1 ].InputSlotClass = #D3D11_INPUT_PER_VERTEX_DATA layout [1 ].InstanceDataStepRate = 0 byte = 编码转换. 文本到UTF8 (“COLOR”)layout [2 ].SemanticName = 取指针_字节集型 (byte )layout [2 ].SemanticIndex = 0 layout [2 ].Format = #DXGI_FORMAT_R32G32B32A32_FLOAT layout [2 ].InputSlot = 0 layout [2 ].AlignedByteOffset = 12 layout [2 ].InputSlotClass = #D3D11_INPUT_PER_VERTEX_DATA layout [2 ].InstanceDataStepRate = 0 如果真 (FAILED (ID3D11Device_CreateInputLayout (device. this (), layout, 取数组成员数 (layout ), vsBlob. GetBufferPointer (), vsBlob. GetBufferSize (), p ), hr )) 调试输出 (“创建输入布局 -> ”, hr, p )
补充内容 (2025-4-17 23:50):
函数原型:
virtual HRESULT STDMETHODCALLTYPE CreatePixelShader(_In_reads_(BytecodeLength) const void *pShaderBytecode,_In_ SIZE_T BytecodeLength,_In_opt_ ID3D11ClassLinka... |
最佳答案
查看完整内容
不是取变量地址那种指针,而是你要模拟C++里的结构体数组,C++结构体数组是放的所有成员值而易语言里结构体数组里仅仅只是存放的结构体成员的指针,完全不一样的东西,你要模拟C++结构体数组然后传递这个数组的指针而不是易语言的取变量地址和取变量数据地址这种
|