glMultiDrawElements останавливает мой код - PullRequest
0 голосов
/ 11 января 2012

Я пытаюсь изучить OpenGL с помощью "Красной книги", и сейчас я нахожусь в точке, где я тестирую glMultiDrawElements.Я уже получил свой код для работы с glDrawElements и другими «более простыми» методами, но он перестает работать здесь, и теперь я полностью застрял.Мой код должен рисовать куб, а код рисования acctuall размещен в:

GLfloat verticies[] = {-0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5};
glVertexPointer(3, GL_FLOAT, 0, verticies);
GLubyte front[] = {4, 5, 6, 7};
GLubyte left[] = {0, 3, 7, 4};
GLubyte right[] = {5, 1, 2, 6};
GLubyte back[] = {0, 1, 2, 3};
GLubyte bottom[] = {0, 1, 5, 4};
GLubyte topp[] = {2, 3, 7, 6};
GLvoid *faces[6] = {front, left, right, back, bottom, topp};
glMultiDrawElements(GL_QUADS, 4, GL_UNSIGNED_BYTE, faces, 6);
glFlush();

Программа основана на какао и прекрасно компилируется, но останавливается при запуске из-за "EXC_BAD_ACCESS".Рядом с glMultiDrawElements (..) стоит желтый предупреждающий треугольник, говорящий «несовместимое преобразование целого числа в указатель», но я подумал, что использовал указатели в массиве «Faces» (по крайней мере, именно так он выглядит в «Красной книге»),Сомоне может мне помочь?

1 Ответ

0 голосов
/ 11 января 2012

Второй параметр glMultiDrawElements() - это указатель на массив размеров, а не числовое значение для размера.Вот почему компилятор жалуется на преобразование целых чисел в указатели (что, кстати, является еще одной причиной, по которой вы должны включить флаг компилятора для превращения предупреждений в ошибки при разработке Какао).

Я считаю, что изменениевышеприведенное чтение

GLsizei count[] = {4, 4, 4, 4, 4, 4};
glMultiDrawElements(GL_QUADS, count, GL_UNSIGNED_BYTE, faces, 6);

должно работать, но я его здесь не проверял.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...