Я делаю куб в OpenGL. Нормальный Я использовал мгновенный код вроде:OpenGL: Как установить нормали и текстурные координаты на куб
glNormal3f(0.0,1.0,0.0);
glTexCoord2f(0.0f,0.0f);
glVertex3f(0.5f, 0.5f,-0.5f);
...
, который немного устарел. Теперь я использую vertices[]
и indices[]
и glDrawElements
для обработки куба:
static float vertices[] =
{
-0.5000, -0.5000, 0.5000,
0.5000, -0.5000, 0.5000,
-0.5000, 0.5000, 0.5000,
-0.5000, 0.5000, 0.5000,
0.5000, -0.5000, 0.5000,
0.5000, 0.5000, 0.5000,
-0.5000, -0.5000, -0.5000,
-0.5000, 0.5000, -0.5000,
0.5000, -0.5000, -0.5000,
0.5000, -0.5000, -0.5000,
-0.5000, 0.5000, -0.5000,
0.5000, 0.5000, -0.5000,
0.5000, -0.5000, -0.5000,
0.5000, 0.5000, -0.5000,
0.5000, -0.5000, 0.5000,
0.5000, -0.5000, 0.5000,
0.5000, 0.5000, -0.5000,
0.5000, 0.5000, 0.5000,
-0.5000, -0.5000, -0.5000,
-0.5000, -0.5000, 0.5000,
-0.5000, 0.5000, -0.5000,
-0.5000, 0.5000, -0.5000,
-0.5000, -0.5000, 0.5000,
-0.5000, 0.5000, 0.5000,
-0.5000, -0.5000, -0.5000,
0.5000, -0.5000, -0.5000,
-0.5000, -0.5000, 0.5000,
-0.5000, -0.5000, 0.5000,
0.5000, -0.5000, -0.5000,
0.5000, -0.5000, 0.5000,
-0.5000, 0.5000, -0.5000,
-0.5000, 0.5000, 0.5000,
0.5000, 0.5000, -0.5000,
0.5000, 0.5000, -0.5000,
-0.5000, 0.5000, 0.5000,
0.5000, 0.5000, 0.5000,
};
static byte indices[] =
{
0, 1, 2,
3, 4, 5,
18, 19, 20,
21, 22, 23,
12, 13, 14,
15, 16, 17,
6, 7, 8,
9, 10, 11,
30, 31, 32,
33, 34, 35,
24, 25, 26,
27, 28, 29
};
Проблема заключается в том, что я не знаю, как установить нормалей и текстурных COORDS правильно, так что сцена будет правильно. Как я могу подсчитать их с данными? Я пытался сделать это с:
glNormalPointer(GL_FLOAT, 0, normals);
glTexCoordPointer(2, GL_FLOAT, 0, texcoords);
и этим данные:
static float normals[] =
{
-1.0000, -1.0000, 1.0000,
1.0000, -1.0000, 1.0000,
-1.0000, 1.0000, 1.0000,
-1.0000, 1.0000, 1.0000,
1.0000, -1.0000, 1.0000,
1.0000, 1.0000, 1.0000,
};
static float texcoords[] =
{
1.0000, 0.0000, 0.0000,
1.0000, 1.0000, 0.0000,
0.0000, 1.0000, 0.0000,
0.0000, 0.0000, 0.0000
};
, но все, что мне удалось получить от этого было уродливый грязным сцена с разбитым освещением и текстурами.
Спасибо :). Когда я добавил текстовые координаты и нормали ко всем моим вершинам, он работал нормально! также у меня слишком много данных в 'texcoords []' должно быть 2 не 3 строки из-за «2 координат» в: 'glTexCoordPointer (2, GL_FLOAT, 0, texcoords);' – NightKn8