2010-12-03 3 views
-1

Новое в openGl, и у меня есть несколько вещей, использующих его. , так что я пытаюсь сделать, это нарисовать куб, но применить текстуру только к одной его поверхности ... я не мог найти ответ на некоторых случайных сайтах, которые я нашел в google, все они говорят о текстурировании всего 3D объект, так можно ли применить его только к одной поверхности или нет?текстурирование в OpenGl

thank u!

+0

Вы используете фиксированную функцию трубопровод или программируемый конвейер? – kusma 2011-10-27 11:14:21

ответ

1

Учебники Nehe's OpenGL - это ресурс # 1, который я бы рекомендовал запустить OpenGL. По крайней мере, это то, где я начал с ;-)

Вот ссылка: HTTP: // nehe.gamedev.net

текстурирования рассматривается в Lesson 6: Texture Mapping

+0

В этой статье обсуждается текстурирование всего объекта, а не только его части. – kusma 2011-10-27 11:13:41

1

Использование:

glEnable(GL_TEXTURE_2D);

перед визуализацией одну поверхность, а затем прямо перед другими поверхностями:

glDisable(GL_TEXTURE_2D);

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

+0

Это, очевидно, правильный ответ для конвейера с фиксированной функцией. Однако для программируемого конвейера glDisable (GL_TEXTURE_2D) не действует. – kusma 2011-10-27 11:15:27

0

Вы также должны добавить текстурные координаты к вершинам полигонов, к которым вы хотите применить текстуру. Для этого вы должны использовать glTexCoord2f/glTexCoord2d. Так, например, если у вас есть следующий (нетекстурированный) многоугольник:

glBegin(GL_POLYGON); 
glVertex3f(0.0f, 0.0f, 0.0f); 
glVertex3f(1.0f, 0.0f, 0.0f); 
glVertex3f(1.0f, 1.0f, 0.0f); 
glVertex3f(0.0f, 1.0f, 0.0f); 
glEnd(); 

Добавить координаты текстуры, как это:

glBegin(GL_POLYGON); 
glTexCoord2f(0.0f, 0.0f); glVertex3f(0.0f, 0.0f, 0.0f); 
glTexCoord2f(1.0f, 0.0f); glVertex3f(1.0f, 0.0f, 0.0f); 
glTexCoord2f(1.0f, 1.0f); glVertex3f(1.0f, 1.0f, 0.0f); 
glTexCoord2f(0.0f, 1.0f); glVertex3f(0.0f, 1.0f, 0.0f); 
glEnd(); 
Смежные вопросы