作者Nestarneal (Nestarneal)
看板C_and_CPP
標題[問題] OpenGL Error - GL_INVALID_OPERATION
時間Fri Jun 7 16:18:48 2013
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VS 2010
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
OpenGL
問題(Question):
我有個 class A 有以下的架構:
class A
{
private:
GLuint _varA;
GLuint _varB;
void funcA();
void funcB();
public:
void A()
{
funcA(); // 建立貼圖索引
funcB(); // 建立 Display List 索引
}
void drawA();
};
而 funcA()、funcB 裡面分別呼叫了
glGenTextures(1, &_varA); 以及 _varB = glGenLists(1);
至於 drawA() 則是使用 _varA 的索引來 Bind Texture 進行貼圖、
以及使用 _varB 的索引來使用 Display List
------
接著 class B 有以下的結構:
class B : public A
{
};
------
目前問題在於跑完以下程式碼後
B b;
b.drawA();
畫面上卻沒有任何東西。
於是我在 funcA() 以及 funcB() 裡面,
建立索引的那兩行後方加上這樣的測試。
if( glGetError() == GL_INVALID_OPERATION )
std::cout << "YES" << std::endl;
於 Dos 視窗內確實都印出了 YES 的字樣。
想請問為什麼會發生這樣的錯誤呢?
謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.35.82.93
→ cuteclare:...你的code勒 06/07 16:54
→ azureblaze:你給的資訊只能知道他發生錯誤.... 06/07 16:56
→ Nestarneal:抱歉,我剛找出錯誤了。我用 glut 建立視窗,發現 06/07 17:02
→ Nestarneal:在視窗建立之後才可以使用那些建立索引的函數, 06/07 17:02
→ Nestarneal:不然就會發生錯誤...@@ 06/07 17:02
→ a27417332:我猜是因為沒建立視窗前,OGL需要的上下文還沒準備 06/20 22:18