OpenGL VAO不会用,使用后光照消失

Extre_Lin 2015-09-02 01:19:03
以前用glBegin时候设置的光照渲染在VAO中消失
VAO代码如下
glGenBuffers(1, &m_VertexBuffer);//绑定VBO
glBindBuffer(GL_ARRAY_BUFFER, m_VertexBuffer);
glBufferData(GL_ARRAY_BUFFER, 9 * meshNum *sizeof(float),positionData,
GL_STATIC_DRAW);
glEnableVertexAttribArray(0);//顶点坐标
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, (GLubyte *)NULL);
glDrawArrays(GL_TRIANGLES,0, 9 * meshNum);

渲染代码如下
////光源部分
GLfloat lightAmbient[] = {0.75f,0.75f,0.75f,1.0f}; //设置环境光的颜色组成
GLfloat lightDiffuse[] = {1.0f,1.0f,1.0f,1.0f}; //漫反射光
glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lightAmbient);
glEnable(GL_LIGHTING); //使用光照模式
glLightfv(GL_LIGHT0,GL_AMBIENT,lightAmbient); //为光源0设置环境光
glLightfv(GL_LIGHT0,GL_DIFFUSE,lightDiffuse); //为光源0设置漫反射光
SetLightDirection(0,0,1); //设置光源的方向
glEnable(GL_LIGHT0);

////材料部分
GLfloat planet_specular[] = { 1.0f, 1.0f, 1.0f, 1.0f };
GLfloat mat_amb_diff[] = {clr.redF(),clr.greenF(),clr.blueF(),1.0};
glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,mat_amb_diff);
glMaterialfv(GL_FRONT, GL_SPECULAR, planet_specular);
glMateriali(GL_FRONT, GL_SHININESS, 128);


glbegin的效果:


VAO效果
...全文
124 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
wy24789 2015-09-04
  • 打赏
  • 举报
回复
好像要使用shader

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧