can*_*rem 1 opengl colors material
将材质数据传递给opengl(在着色器中使用):
float white[4] ={1.0f,1.0f,1.0f,1.0f};
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, white);
glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, white);
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, white);
Run Code Online (Sandbox Code Playgroud)
int whitei[4] = {255,255,255,255};
glMaterialiv(GL_FRONT_AND_BACK, GL_AMBIENT, whitei);
glMaterialiv(GL_FRONT_AND_BACK, GL_DIFFUSE, whitei);
glMaterialiv(GL_FRONT_AND_BACK, GL_SPECULAR, whitei);
Run Code Online (Sandbox Code Playgroud)
第一个是美妙的,但第二个只给出黑色网格.两者都用在完全相同的上下文中(基本上我写了第一个,然后第二个替换了第一个).
有谁知道为什么会这样?glMaterialiv真的会让我的生活更轻松(如果我可以让它工作),因为我保持我的颜色为rgba字节,我不确定我是否想让它们变大4倍只是为了将它们转换为浮点数.
glColor3i和glMaterialiv都采用[0,INT_MAX]范围内的颜色,INT_MAX为2 ^ 31-1.这说明您的网格为黑色,255相当于为浮点数传递0.000000119.
从技术上讲,将它作为浮点数或整数传递应该不重要.在您的示例中,您已经将各个组件以其原始大小的4倍存储,因此不会丢失.
我甚至不相信通过跳过int - > float转换会产生任何性能提升,因为驱动程序可能仍会将事物转换为浮动在CPU方面.我在那里猜测,测试必须证明这一点.
| 归档时间: |
|
| 查看次数: |
1719 次 |
| 最近记录: |