我不知道簡單代碼有什麼問題。該函數用於python和ctypes。OpenGL GL_LINE_STRIP在glEnd後給出錯誤1281(無效值)
extern "C" void add_lines(bool antialias,GLdouble coordinates[][2],int array_size,GLdouble w,GLdouble r,GLdouble g, GLdouble b,GLdouble a){
glDisable(GL_TEXTURE_2D);
if (antialias){
glEnable(GL_LINE_SMOOTH); //Enable line smoothing.
}
glColor4d(r,g,b,a);
glLineWidth(w);
glBegin(GL_LINE_STRIP);
for (int x = 0; x < array_size; x++) {
glVertex2d(coordinates[x][0],coordinates[x][1]);
}
glEnd();
std::cout << glGetError();
if (antialias){
glDisable(GL_LINE_SMOOTH); //Disable line smoothing.
}
glEnable(GL_TEXTURE_2D);
}
的std :: COUT < < glGetError();每次發出1281次。
謝謝。
在函數的開頭添加一個類似的cout以確保錯誤發生在它的內部。它可能是早期操作的結果(例如glTexImage2d)。在你的代碼中,如果w小於或等於0,glLineWidth可以產生該錯誤。 – 2010-05-28 14:05:38
是的,你是對的。由於某種原因,GLdouble接近於零。在python腳本中,它通常是1,但總是會變成一個非常小的數字。我會檢查其他的雙重值。 – 2010-05-28 14:21:30
是的,他們都很小。我會看看是否真的需要事先將它們轉換成ctypes。我認爲ctypes自動轉換數字。 – 2010-05-28 14:23:29