OpenGL颜色矩阵

Ant*_*son 1 c++ opengl colors

如何让OpenGL颜色矩阵转换工作?

我修改了一个只绘制三角形的示例程序,并添加了一些颜色矩阵代码,看看我是否可以改变三角形的颜色,但它似乎不起作用.

    static float theta = 0.0f;
glClearColor( 1.0f, 1.0f, 1.0f, 1.0f );
glClearDepth(1.0);
glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glPushMatrix();
glRotatef( theta, 0.0f, 0.0f, 1.0f );
glMatrixMode(GL_COLOR);

GLfloat rgbconversion[16] = 
{
    0.0f, 0.0f, 0.0f, 0.0f,
    0.0f, 0.0f, 0.0f, 0.0f,
    0.0f, 0.0f, 0.0f, 0.0f,
    0.0f, 0.0f, 0.0f, 0.0f
};
glLoadMatrixf(rgbconversion);
glMatrixMode(GL_MODELVIEW);

glBegin( GL_TRIANGLES );
glColor3f( 1.0f, 0.0f, 0.0f ); glVertex3f( 0.0f, 1.0f , 0.5f);
glColor3f( 0.0f, 1.0f, 0.0f ); glVertex3f( 0.87f, -0.5f, 0.5f );
glColor3f( 0.0f, 0.0f, 1.0f ); glVertex3f( -0.87f, -0.5f, 0.5f );
glEnd();
glPopMatrix();
Run Code Online (Sandbox Code Playgroud)

据我所知,我加载的颜色矩阵应该将三角形改为黑色,但它似乎不起作用.有什么我想念的吗?

Luc*_*cas 6

颜色矩阵仅适用于像素传输操作,例如glDrawPixels,它们在当前硬件上不是硬件加速的.但是,使用片段着色器实现颜色矩阵非常简单.你可以将你的矩阵作为一个统一的mat4传递,然后将其多处理gl_FragColor