Как нарисовать линию, используя GL_TRIANGLE_STRIP в OpenGLES?
В настоящее время я работаю в простом игровом приложении с использованием openGLES, рисую линию в режиме GL_Lines и работаю нормально, я хочу нарисовать линию с помощью GL_TRIANGLE_STRIP, возможно ли нарисовать линию с помощью 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);
1 ответ
Решение
Вам нужно продублировать каждую вершину линии и сместить ее:
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);
Это просто для линии с заранее заданным направлением. В противном случае вам нужно рассчитать направление смещения, перпендикулярное направлению линии.