簡體   English   中英

啟用深度測試時出現 GL 錯誤 1280

[英]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 以下是發生這種情況的所有可能原因:

  1. 該錯誤來自其他功能。 進行此調用之前,請確保已從隊列中刪除了所有錯誤。 您說您已經嘗試過了; 我只是很全面。
  2. 您的OpenGL加載庫有問題。 也許它給GL_DEPTH_TEST賦予了錯誤的值。 GL_DEPTH_TEST的值應為0x0B71。 或者,它可能將錯誤的函數放在glEnable 要對此進行測試,您可以調試到庫的初始化函數,或者可以使用glIntercept或類似工具查看正在調用的函數的確切位置。
  3. 驅動程序錯誤。 要對此進行測試,請嘗試將此啟用(帶有錯誤檢查)放在代碼的不同位置。 錯誤在哪里,錯誤在哪里?

我不認為這個錯誤來自glEnable( GL_DEPTH_TEST )

代碼1280表示GL_INVALID_ENUM

我以前遇到過這個錯誤。 在我的情況下,我錯誤地將renderer_program傳遞給了glEnable方法。 將正確的枚舉傳遞給方法后,OpenGL 不會顯示任何錯誤。

所以,也許您需要關注代碼的其他部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM