2012-04-24 72 views
0

目前我正在使用openGLES的簡單遊戲應用程序,使用GL_Lines模式繪製線條,並且正常工作,我想使用GL_TRIANGLE_STRIP繪製線條,是否可以使用GL_TRIANGLE_STRIP繪製線條?如何在OpenGLES中使用GL_TRIANGLE_STRIP繪製線條?

由於提前

我試過的源代碼:

glClearColor(0.65f, 0.65f, 0.65f, 1.0f); //Background color changes, its like Red,Green,Blue,Alpha color. 
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 

    [self.effect prepareToDraw]; 


     const GLfloat line[] = 
     { 
      0.0f, 0.5f, 
      0.0f, -1.5f, 
      0.0f,-1.5f, 
     }; 

     // Create buffer object array 
     GLuint bufferObjectNameArray; 

     // Have OpenGL generate a buffer name and store the buffer object array 
     glGenBuffers(1, &bufferObjectNameArray); 

     // Bind the buffer object array to the GL_ARRAY_BUFFER target buffer 
     glBindBuffer(GL_ARRAY_BUFFER, bufferObjectNameArray); 

     // Send the line data over to the target buffer 
     glBufferData(
        GL_ARRAY_BUFFER, // the target buffer 
        sizeof(line),  // the number of bytes to put into the buffer 
        line,    // a pointer to the data being copied 
        GL_STATIC_DRAW); // the usage pattern of the data 

     // Enable vertex data to be fed down the graphics pipeline to be drawn 
     glEnableVertexAttribArray(GLKVertexAttribPosition); 

     // Specify how the GPU looks up the data 
     glVertexAttribPointer(
           GLKVertexAttribPosition, // the currently bound buffer holds the data 
           2,      // number of coordinates per vertex 
           GL_FLOAT,    // the data type of each component 
           GL_FALSE,    // can the data be scaled 
           2*4,     // how many bytes per vertex (2 floats per vertex) 
           NULL);     // offset to the first coordinate, in this case 0 
     glDrawArrays(GL_TRIANGLE_STRIP, 0, 3); 

回答

0

你需要複製該行的每個頂點和偏移它:

const GLfloat line[] = 
    { 
     -1.0f, 0.5f, 1.0f, 0.5f,//0.0f, 0.5f, 
     -1.0f, 0.5f, 1.0f, 1.5f,//0.0f, -1.5f, 
    }; 
... 
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); 

它只是爲符合預定義線方向。否則,您需要計算垂直於線方向的偏移方向。

+0

感謝您的回覆 – Sampath 2012-04-24 13:38:48

+0

我試過你的代碼,輸出顯示一個三角形,但我只想畫一條線,請幫助我。 – Sampath 2012-04-24 13:42:25

+0

調整偏移值(-1.0f和1.0f)。至於三角形,你是否在glDrawArrays(...)中將'3'更改爲'4'? – brigadir 2012-04-24 13:48:17