我在創建第二個框時遇到問題。 所以我有一個物體用紋理繪製,它似乎工作正常,但我有一些代碼附加到它,所以如果我按住鼠標左鍵上的第二個框在它的右邊。 取而代之的是第二個盒子沒有成功,而質感的盒子完全沒有了。繪製沒有紋理的第二個對象時出現問題
我覺得我錯過了一些與opengl,就像我必須啓用或禁用之前或之後繪製1的東西。
我的繼承人對OpenGL動初始化代碼:
private static void glInit(){
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, Display.getWidth(), Display.getHeight(), 0, -1, 1);
glMatrixMode(GL_MODELVIEW);
glEnable(GL_TEXTURE_2D);
glClearColor(0, 0, 0, 1);
glDisable(GL_DEPTH_TEST);
}
繼承人的代碼,吸引的對象:
public void render(){
if(myImage != null){
myImage.bind();
glBegin(GL_QUADS);
{
// upper left
glTexCoord2f(0, 0);
glVertex2f(x, y);
// upper right
glTexCoord2f(1, 0);
glVertex2f(x + size, y);
// bottom right
glTexCoord2f(1, 1);
glVertex2f(x + size, y + size);
// bottom left
glTexCoord2f(0, 1);
glVertex2f(x, y + size);
}
glEnd();
}
if(drawChoiceBox){
glColor3f(1, 0, 0);
glBegin(GL_QUADS);
{
glVertex2f(x + size, y - size);
glVertex2f(x + size*2, y - size);
glVertex2f(x + size*2, y + size*2);
glVertex2f(x + size, y + size*2);
}
glEnd();
}
}
我已經測試邏輯歌廳第二框起來,它的作品,所以我猜它一定是我用opengl繪製東西的方式丟失了一些東西。 任何想法什麼我想念?那就是我現在項目中的所有opengl代碼。
所有的代碼,你有這個「初始化」功能實際上屬於繪圖功能。典型的新手誤解,但作爲一個平坦的狀態機,幾乎沒有初始化。相反,當你需要時,你可以在需要之前設置所有狀態。您需要爲對象進行texting→glEnable(GL_TEXTURE_ ...)。你需要* no *紋理→glDisable(GL_TEXTURE_ ...),對於其他任何狀態都是一樣的。在繪圖代碼之外唯一有意義的事情是上傳圖像和幾何數據,即紋理和緩衝對象。 – datenwolf