[問題] Qt openGL材質讀取
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Qt5.0
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
openGL
大家好
最近在試著用Qt寫openGL的東西
在寫的時候有碰到材質讀不出來的問題
搞了很久都沒找到原因
所以上來請教大家
由於code不在手邊
所以先說重點
就是我發現當在某些情況下時
使用 glGenTextures(1, &texture[0]);
所產生的值一直是0
似乎因而導致材質貼不上去
以下是憑印象打的code:
想請問是在哪邊使用錯了
void MyClass::initGL()
{
...
memset(&texture[0], 0, sizeof(texture)); //texture形式為 GLuint texture[5];
//load_texture(); //位置1
...
}
void MyClass::load_texture()
{
glGenTextures(1, &texture[0]); //請注意此行
glBindTexture(GL_TEXTURE_2D, texture[0]);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 96, 192, 0, GL_RGB,
GL_UNSIGNED_SHORT_5_6_5, img_data);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
}
void MyClass::render()
{
if (!m_program) init(); // m_program是一個宣告為QGLShaderProgram的class
...
//load_texture(); //位置2
glBindTexture(GL_TEXTURE_2D, texture[0]);
glDrawArrays(GL_TRIANGLE_STRIP, 0, front_triNumVerts);
...
}
void get_buffer(char* buffer)
{
....
load_texture();
....
}
這個code是修改Qt裡面的例子
大意是若是在QML裡面改變某個值
他最後會呼叫render()達到畫圖的效果
情況一:一剛開始我把load_texture()寫在 initGL的位置1的時候
圖可以正常顯示
在這情況下 load_texture() 只會被呼叫一次
情況二:當我把load_texture()放在render()裡的位置2的時候
圖也可以正常顯示
在這情況下 load_texture() 會一直被呼叫
現在我有一個來自外部的訊號
這個訊號會每隔一段時間就會呼叫 get_buffer()一次
get_buffer()也會去call load_texture()
但我搞不懂為何在這個情況下
最後材質不會被貼上去?
去追了一下發現當我把load_texture放在位置1或位置2
使用glGenTextures(1, &texture[0])這個API
最後texture[0]都不會是0
但是當我放在get_buffer裡的時候它的值就一直是0
查了一下網路
是看到有人說 glGenTextures只能call一次
但我在情況一情況二都是可以正常顯示的啊 囧
甚至我做了一個小測試
就是利用Qt的Timer,固定一個時間會去call一次load_texture
這樣的情況下也是正常的
不懂還有哪些地方是我忽略的?
補充一下
我說的外部訊號是一個thread
且是用.c檔寫的
這個.c檔會處理一些東西之後
在call我的get_buffer
不知道會不會跟這有關係?
以上的部分只是擷取我覺得應該有關係的
若是大家想要完整一點的我在貼上來
由於小弟剛碰
很多東西還不是很懂 @@"
所以還請大家多指教
在此也先謝謝大家熱心回答了!
--
▍ ▍ ╯╰ ╯╰ ◢◣ ◢◣ 我最愛的 柏柏龍~ 柏柏龍~
◢██◣ ╮╭ ▎▎╮╭ ▎▎ 柏柏龍~ 柏柏龍~
⊙ ⊙ ◢ ◣ ⊙ ⊙ ◣ 人人心中都有柏柏龍~
≡ ▼ ≡ ▲▲ ● ● ≡ ▼ ≡ ■ ■ ■ ■ 憤怒就永遠不會消失~
皿 ◢⊙⊙◣ ≡皿 ≡ 皿 炸是最美的擁有~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.120.179.30
推
10/26 21:36, , 1F
10/26 21:36, 1F
→
10/26 21:36, , 2F
10/26 21:36, 2F
→
10/26 21:37, , 3F
10/26 21:37, 3F
推
10/27 00:40, , 4F
10/27 00:40, 4F
→
10/27 00:41, , 5F
10/27 00:41, 5F
→
10/27 01:04, , 6F
10/27 01:04, 6F
推
10/27 01:09, , 7F
10/27 01:09, 7F
→
10/30 00:35, , 8F
10/30 00:35, 8F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章