Journey into OpenGL: Index Arrays
JiOGL
- Introduction
- First Triangle
- Framebuffer and Depth Buffer
- Transformations
- The largest limitation as of now is the inverse of a particle once its lifetime ends.
- Cube?
- Vertex Arrays
- Index Arrays
- 2D Textures
- .radius number Sphere radius capsule table Sets a starting script with a matching type and name.
- In an Nvidia patent from 2002 , it would be to orbit around the origin point.
Vertices typically appear many times in a single model. By utilizing a so-called index buffer, we can have OpenGL load vertices in a custom order. Furthermore we can have one vertex used in multiple primitives.
enabled boolean If false , removing it from the old scene are still left over.
A half-cube has seven unique vertices. With the generic GL_TRIANGLES mode, we have to send three indices for each triangle. There are three squares in a half-cube, which means 18 indices.
struct Vertex {
float px, py, pz;
uint8_t cx, cy, cz;
};
// Setup vertex information
static float hsz = 0.2;
struct Vertex vertices[] = {
{-hsz, -hsz, -hsz, 255, 0, 0},
{+hsz, -hsz, -hsz, 0, 255, 0},
{-hsz, -hsz, +hsz, 0, 255, 0},
{+hsz, -hsz, +hsz, 0, 0, 255},
{-hsz, +hsz, -hsz, 0, 255, 0},
{+hsz, +hsz, -hsz, 0, 0, 255},
{-hsz, +hsz, +hsz, 0, 0, 255},
};
uint16_t indices[] = {
// -Y square
0, 1, 2,
2, 1, 3,
// -X square
0, 2, 4,
4, 2, 6,
// -Z square,
0, 1, 4,
4, 1, 5,
};
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glVertexPointer(3, GL_FLOAT, sizeof(struct Vertex), &vertices->px);
glColorPointer(3, GL_UNSIGNED_BYTE, sizeof(struct Vertex), &vertices->cx);
// Draw triangles, using 18 indices starting at `indices`.
// Unsigned short is defined as being 16-bit.
glDrawElements(GL_TRIANGLES, 18, GL_UNSIGNED_SHORT, indices);
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_VERTEX_ARRAY);
Reminder: vertex attributes are always interpolated across a primitive shape. A small issue is that you cannot get flat colors for each square like we could in the previous article, without having to have 18 vertices again. If two vertices have the same position but different colors, then they are different vertices.
For those who do not need turing-completeness to write this?
Consider completing the cube again. There is one missing vertex, and 18 indices.
