C++ DirectX 9着色器未显示错误

C++ DirectX 9着色器未显示错误,c++,shader,directx-9,C++,Shader,Directx 9,我正在使用DirectX9和着色器,并使用以下代码: D3DXCreateEffectFromFile(DirectX::device, "shader.fx", 0, 0, D3DXSHADER_DEBUG, 0, &effect, &errors); if(errors){ MessageBox(0, (char*)errors->GetBufferPointer(), 0, 0); } 问题是,我知道我的着色器中有一个错误/bug,但它不会弹出一个错误框来

我正在使用DirectX9和着色器,并使用以下代码:

D3DXCreateEffectFromFile(DirectX::device, "shader.fx", 0, 0, D3DXSHADER_DEBUG, 0, &effect, &errors);

if(errors){
    MessageBox(0, (char*)errors->GetBufferPointer(), 0, 0);
}

问题是,我知道我的着色器中有一个错误/bug,但它不会弹出一个错误框来告诉错误是什么。。。有人能告诉我我做错了什么吗?

我最近升级到DirectX 11,这就是我现在正在做的。它应该在DX9中保持住

char *compileErrors;
unsigned long bufferSize, i;
std::ofstream fout;


//get a pointer to the error message text buffer
compileErrors = (char*)(errorMessage->GetBufferPointer());

//get the length of the message
bufferSize = errorMessage->GetBufferSize();

//open a file to write the error message to
fout.open("shader-error.txt");

//write out the error message
for(i=0; i<bufferSize; i++)
{
    fout << compileErrors[i];
}

//close the file
fout.close();

//release the error message
errorMessage->Release();
errorMessage = nullptr; //or NULL, depending on your compiler

//pop a message up on the screen to notify the user to check the text file for compile errors
MessageBox(hwnd, "Error compiling shader.  Check shader-error.txt for message.", (LPCSTR)shaderFilename, MB_OK);
//shaderFilename and hwnd not defined in this code.  pass as a function parameter or something
char*编译器错误;
无符号长缓冲区大小,i;
标准:流式流量计;
//获取指向错误消息文本缓冲区的指针
编译器错误=(字符*)(错误消息->GetBufferPointer());
//获取消息的长度
bufferSize=errorMessage->GetBufferSize();
//打开要将错误消息写入的文件
fout.open(“shader error.txt”);
//写出错误消息

对于(i=0;我必须在调试中断时检查
错误
。它会告诉你它的内容。如果你想知道是否成功,请检查
D3DXCreateEffectFromFile
的返回代码。对不起,调试中断是什么意思?在调试模式下,某些IDE中有设置代码中断的功能。它会在这些中断时停止程序因此,您可以确定发生了什么。无论如何,请查看我的第一条注释以进行结果检查。执行
HRESULT hr
hr=D3DXCreateEffectFromFile(DirectX::device,“shader.fx”,0,0,D3DXSHADER\u DEBUG,0,&effect,&errors);
并打印出hr。