基础知识(十二)Opengl回顾记录
2016-02-15 19:17
519 查看
研究生搞三维图形,天天用opengl,然而毕业了一段时间后,发现以前使用opengl的一些小细节都忘了,以前都没有记录,突然感到后悔了……这边只能记录一些目前还记得的一些细节了,省的以后,连这些都给忘了。
1、顶点颜色
如果想要启用顶点颜色:
那么需要语句:
使用绘制完毕后,可用gldisable关闭。
[b]2、二维绘制
有的时候,我们需要在opengl三维场景中,绘制一个二维的东西,这个时候可以采用加载单位矩阵的方式
3、物体遮挡
有的时候,我们需要把一个三维的物体,置于另外一个物体的前面,不管这个这两个物体的世界坐标关系,就是要实现遮挡,这个时候可以采用:启用深度、关闭深度。具体的也给忘了
1、顶点颜色
如果想要启用顶点颜色:
glBegin(GL_TRIANGLES); int a,b,c; a=model->faces[j].v[0]; b=model->faces[j].v[1]; c=model->faces[j].v[2]; glNormal3fv(&model->FaceNormal[j][0]); glColor3f(model->gray_color[a],model->gray_color[a],model->gray_color[a]); glVertex3fv(&model->vertices[a][0]); glColor3f(model->gray_color,model->gray_color[b],model->gray_color[b]); glVertex3fv(&model->vertices[b][0]); glColor3f(model->gray_color[c],model->gray_color[c],model->gray_color[c]); glVertex3fv(&model->vertices[c][0]); glEnd();
那么需要语句:
glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE); glEnable(GL_COLOR_MATERIAL);
使用绘制完毕后,可用gldisable关闭。
[b]2、二维绘制
有的时候,我们需要在opengl三维场景中,绘制一个二维的东西,这个时候可以采用加载单位矩阵的方式
void CParameterDecal::Render2D() { if(m_BePara_Faces.empty())return; GLint OrigViewport[4]; glGetIntegerv(GL_VIEWPORT,OrigViewport); glDisable(GL_LIGHTING); glMatrixMode(GL_PROJECTION); glPushMatrix();//加载单位矩阵 glLoadIdentity(); glMatrixMode(GL_MODELVIEW); glPushMatrix(); glLoadIdentity(); glDisable(GL_DEPTH_TEST); glEnable (GL_LINE_SMOOTH); glHint (GL_LINE_SMOOTH, GL_NICEST); glEnable(GL_COLOR_MATERIAL); glColor3f(1,0,0); glLineWidth(1.0); float xyscale=(float)(OrigViewport[2]-OrigViewport[0])/(OrigViewport[3]-OrigViewport[1]); float squartlengthx=0.5; vec2 squartcenter(1-0.3,-1+xyscale*0.3); float dScalex=0.25* 1.0/ (m_Texture->t_fDecalRadius*1.1f); float dScaley=dScalex*xyscale; glTranslatef(squartcenter[0],squartcenter[1],0); glScalef(dScalex,dScaley,1); //绘制 int fn=m_Tmesh->faces.size(); glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); for (int i=0;i<fn;i++) { if(!m_BePara_Faces[i])continue; if(m_PDEM->m_distortion[i]>0)glColor3f(1-m_PDEM->m_distortion[i],1-m_PDEM->m_distortion[i],1); else if(m_PDEM->m_distortion[i]<=0)glColor3f(1,1+m_PDEM->m_distortion[i],1+m_PDEM->m_distortion[i]); TriMesh::Face &f=m_Tmesh->faces[i]; glBegin(GL_TRIANGLES); for (int j=0;j<3;j++) { glVertex2f(m_Para_Result[f[j]][0],m_Para_Result[f[j]][1]); } glEnd(); } glPolygonMode(GL_FRONT_AND_BACK,GL_LINE); glColor3f(0,0,0); for (int i=0;i<fn;i++) { if(!m_BePara_Faces[i])continue; TriMesh::Face &f=m_Tmesh->faces[i]; glBegin(GL_TRIANGLES); for (int j=0;j<3;j++) { glVertex2f(m_Para_Result[f[j]][0],m_Para_Result[f[j]][1]); } glEnd(); } glDisable(GL_LINE_SMOOTH); glEnable(GL_DEPTH_TEST); glMatrixMode(GL_PROJECTION); glPopMatrix(); glMatrixMode(GL_MODELVIEW); glPopMatrix(); glEnable(GL_LIGHTING); glDisable(GL_COLOR_MATERIAL); }
3、物体遮挡
有的时候,我们需要把一个三维的物体,置于另外一个物体的前面,不管这个这两个物体的世界坐标关系,就是要实现遮挡,这个时候可以采用:启用深度、关闭深度。具体的也给忘了
相关文章推荐
- Could not publish server configuration for Tomcat v6.0 Server at localhost.
- 【高可用HA】HA之DRBD详解(基于CentOS7.0)
- Tomcat 中的 Log
- linux 基本命令常用选项(目录和文件)
- WDA select-options
- nginx+nginx-rtmp-module+ffmpeg搭建流媒体服务器
- Hadoop - Azkaban 作业调度
- 在 Tomcat 中使用 JSTL
- BeanShell Assertion in Jmeter
- Linux安装JDK和配置环境变量
- Duplicate files copied in APK META-INF/LICENSE.txt
- linux(5)--补充(管道| / 重定向> / xargs)/find 与xargs结合使用/vi,grep,sed,awk(支持正则表达式的工具程序)
- 今日主题:nginx反向代理
- ubuntu 源码安装 nginx
- Mac系统下创建右键打开Shell的功能
- Nginx 负载均衡 后端 监控检测 nginx_upstream_check_module 模块的使用
- Index Condition Pushdown Optimization
- Linux下定时自动重启mysql服务
- CentOs下jdk_6u24+tomcat多实例的安装方法
- idea运行tomcat工程