缓存
1)颜色缓存:多重采样技术,动画中采用了双重缓冲技术
深度缓存:每个像素保留一个深度值,可以用来判断3维空间中物体的可见性
模板缓存:限制屏幕特定区域的绘制
2)缓存掩码:glDepthMask(GL_TRUE)则深度缓存可以写入, 此操作在将数据写入颜色、深度或者模板缓存区之前。
设置顶点的颜色和位置
void Initialize( )
{
glGenVertexArrays( NumVAOs, VAOs );
glBindVertexArray( VAOs[Triangles] );
struct VertexData {
GLubyte color[4];
GLfloat position[4];
};
VertexData vertices[NumVertices] = {
{
{ 255, 0, 0, 255 }, { -0.90f, -0.90f }}, // Triangle 1
{
{ 0, 255, 0, 255 }, { 0.85f, -0.90f }},
{
{ 0, 0, 255, 255 }, { -0.90f, 0.85f }},
{
{ 10, 10, 10, 255 }, { 0.90f, -0.85f }}, // Triangle 2
{
{ 100, 100, 100, 255 }, { 0.90f, 0.90f }},
{
{ 255, 255, 255, 255 }, { -0.85f, 0.90f }}
};
glGenBuffers( NumBuffers, Buffers );
glBindBuffer( GL_ARRAY_BUFFER, Buffers[ArrayBuffer] );
glBufferData( GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW );
ShaderInfo shaders[] = {
{ GL_VERTEX_SHADER, "media/shaders/gouraud/gouraud