[英]GL Error 1280 when enabling depth test
我在編寫 opengl 應用程序時遇到一些問題。
GLenum err = 0;
glEnable( GL_DEPTH_TEST );
err = glGetError();
if ( err != GL_NO_ERROR )
printf( "Error: %s\n",glewGetErrorString( err ) );
上面的代碼向控制台打印出未知錯誤,當我單步執行它時,我得到了 1280 代碼。 我已經檢查了 glEnable 的 khronos 頁面並且枚舉在那里,那么為什么這會導致問題? 我已經查找了錯誤代碼,它是針對無效枚舉的,但這怎么可能呢?
您確定錯誤來自glEnable(GL_DEPTH_TEST);
打電話?
您可以嘗試以下方法:
PrintErrors(); // Test for previous error
glEnable(GL_DEPTH_TEST);
PrintErrors();
...
void PrintError() {
GLenum err;
for(;;) {
err = glGetError();
if (err == GL_NO_ERROR) break;
printf("Error: %s\n", glewGetErrorString(err));
}
}
錯誤0x500 / 1280表示GL_INVALID_ENUM
,這意味着不允許函數調用中的枚舉數之一。 顯然, GL_DEPTH_TEST
不會發生這種情況,從OpenGL 1.0開始在glEnable
已允許使用GL_DEPTH_TEST
。 以下是發生這種情況的所有可能原因:
GL_DEPTH_TEST
賦予了錯誤的值。 GL_DEPTH_TEST
的值應為0x0B71。 或者,它可能將錯誤的函數放在glEnable
。 要對此進行測試,您可以調試到庫的初始化函數,或者可以使用glIntercept或類似工具查看正在調用的函數的確切位置。 我不認為這個錯誤來自glEnable( GL_DEPTH_TEST )
;
代碼1280
表示GL_INVALID_ENUM
;
我以前遇到過這個錯誤。 在我的情況下,我錯誤地將renderer_program
傳遞給了glEnable
方法。 將正確的枚舉傳遞給方法后,OpenGL 不會顯示任何錯誤。
所以,也許您需要關注代碼的其他部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.