因此,我開始使用openGL,一直遵循Jeff LaMarche's blog上的教程,並且在嘗試使用GL_TRIANGLE_STRIP模式繪製正方形時遇到了問題與glDrawArrays。爲什麼在OpenGL ES 1.1中使用GL_TRIANGLE_STRIP時會出現此畫圖故障
它的工作,我的意思是我可以畫一個正方形,但我得到這個奇怪的繪圖故障。你可以在這裏看到:
Drawing glitch http://img10.imageshack.us/img10/1631/picture1io.png
我如果您使用了由Jeff提供的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);
}
什麼。程序運行一段時間後,最終故障將消失。
任何想法?
乾杯
如果將after改爲另外一種,會發生什麼? [例如:是否有另一種意外畫出的形狀?] – 2009-10-21 04:51:18
Err,...將*顏色*更改爲... – 2009-10-21 04:52:00