2013-03-17 2 views
1

OpenGL очень запутан для меня, и я не привык к много графической терминологии и т. Д., Который очень распространен во многих учебниках. Я понимаю, как рисовать треугольники, круги и квадроциклы, полигоны и т. Д., Но теперь я пытаюсь понять, как работают текстуры.JOGL Confusion - Как работают текстуры?

Может ли кто-нибудь указать мне правильное направление для понимания текстур?

Поскольку я мог только заставить JOGL работать в Netbeans, я попытался поместить изображение, озаглавленное «Tiki Mask» в путь сборки. Когда я запустил это, это не было исключение, поэтому я предположил, что он нашел файл изображения?

gl.glGenTextures(1, glu, 0); 
    gl.glBindTexture(gl.GL_TEXTURE_2D, glu[1]); 



    try { 

     Texture tex = TextureIO.newTexture(new File("tikimask.jpg"), true); 
     gl.glBegin(GL.GL_POLYGON); 
    gl.glNormal3f(0,0,1); 
     gl.glTexCoord2d(-tex.getWidth(), -tex.getHeight()); 
     gl.glVertex2d(-25, -25); 
     gl.glTexCoord2d(-tex.getWidth(), tex.getHeight()); 
     gl.glVertex2d(1.0f,0); 
     gl.glTexCoord2d(tex.getWidth(), tex.getHeight()); 
     gl.glVertex2d(.05f, .05f); 
     gl.glTexCoord2d(tex.getWidth(), -tex.getHeight()); 
     gl.glVertex2d(0, .05f); 
    gl.glEnd(); 
    gl.glFlush(); 



    } catch (IOException ex) { 
     Logger.getLogger(SimpleJOGLwee.class.getName()).log(Level.SEVERE, null, ex); 
    } catch (GLException ex) { 
     Logger.getLogger(SimpleJOGLwee.class.getName()).log(Level.SEVERE, null, ex); 
    } 
+0

Если вы все еще пытаетесь изучить OpenGL в Java, я бы предложил [эти учебники] (http://www.youtube.com/playlist?list=PL19F2453814E0E315). Они должны дать вам хорошее представление о текстурах и других концепциях OpenGL, а также использовать LWJGL, который ИМХО лучше, чем JOGL. – Aaron

+0

Кроме того, ваш вопрос не очень ясен. Что именно вы не понимаете? – Aaron

ответ

0

Ваша проблема в том, что вы никогда не связывали текстуру, которую вы загрузили. Попробуйте добавить следующие строки:

tex.enable(); 
tex.bind(); 

после загрузки текстуры.

Кроме того, я бы рекомендовал загрузить текстуру в вашу функцию init, а не функцию рисования, а затем просто включить и привязать их в вашей функции рисования.

Смежные вопросы