Итак, я начинаю работать с openGL, следуя инструкциям в Jeff LaMarche's blog, и у меня возникла проблема при попытке рисовать квадрат с использованием режима GL_TRIANGLE_STRIP с glDrawArrays.Почему этот червь выглядит с GL_TRIANGLE_STRIP в OpenGL ES 1.1
Это работает, поэтому я имею в виду, что я могу нарисовать квадрат, но я получаю этот странный рисунок сбоя. Вы можете увидеть здесь:
Drawing glitch http://img10.imageshack.us/img10/1631/picture1io.png
Я использую шаблон Xcode, который предоставленный Джеффом, поэтому я предполагаю, что установка все собственно. Код, я использую в функции drawView выглядит следующим образом:
Square2D *square = malloc(sizeof(Square2D));
Square2DSet(square, -0.25, -0.25, -20.0, 0.5, 0.5);
glLoadIdentity();
glClearColor(0.7, 0.7, 0.7, 1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glEnableClientState(GL_VERTEX_ARRAY);
glColor4f(1.0, 0.0, 0.0, 1.0);
glVertexPointer(3, GL_FLOAT, 0, square);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 12);
glDisableClientState(GL_VERTEX_ARRAY);
if(square != NULL)
free(square);
вот код для Square2d и Square2DSet:
typedef struct {
Vertex3D tl;
Vertex3D bl;
Vertex3D tr;
Vertex3D br;
} Square2D;
static inline void Square2DSet(Square2D *sq, GLfloat x, GLfloat y, GLfloat z, GLfloat width, GLfloat height)
{
sq->tl = Vertex3DMake(x, y, z);
sq->bl = Vertex3DMake(x, y + height, z);
sq->tr = Vertex3DMake(x + width, y, z);
sq->br = Vertex3DMake(x + width, y + height, z);
}
Я уверен, что я делаю что-то неправильно, просто не уверен, какие. В конце концов глюк исчезнет после того, как программа запустится немного.
Любые идеи?
Приветствия
Что произойдет, если вы измените значение на другое? [например: есть ли другая фигура случайно?] – 2009-10-21 04:51:18
Err, ... изменить * цвет * на ... – 2009-10-21 04:52:00