OpenGL学习二--基础知识
来源:互联网 发布:部落冲突巨人升级数据 编辑:程序博客网 时间:2024/06/08 06:23
名称解释:
渲染render:对一个三维物体进行几何描述并且把它转换成为屏幕上的一幅图像。
透视:指直线之间的角度。
纹理贴图texture mapping:通过一幅图像向一个多边形提供额外细节的技巧称为纹理贴图
纹理texture:我们所提供的图像。
纹理单元texel:纹理中每个单独的元素。
过滤filtering:在一个物体的表面上拉伸或压缩纹理单元的过程
混合blending:屏幕上颜色或物体的组合。
抗锯齿antialiasing:
保持模式retained mode:我们向API或者工具箱提供物体或场景的高层几何描述。
立即模式immediate mode:我们按照一次一片的方式创建几何物体。
视口viewport:窗口内部用于绘制裁剪区域的客户区域。
管线pipeline
第一个程序
#include
void RenderScene(void){
}
void SetupRC(void){
}
int main(int argc, char *argv[])
{
}
画点
glBegin(GL_POINTS);
glVertex3f(0.0f,0.0f,0.0f);
glEnd();
设置点的大小:
在指定图元之前指定点的大小:
glpointSize(**);
画线:
glBegin(GL_POINTS);
glVertex3f(0.0f,0.0f,0.0f);
glVertex3f(50.0f, 50.0f,50.0f);
glEnd();
画线带:
glBegin(GL_POINT_STRIP);
glVertex3f(0.0f,0.0f,0.0f);
glVertex3f(50.0f, 50.0f,0.0f);
glVertex3f(50.0f, 100.0f,0.0f);
glEnd();
画线环:
glBegin(GL_POINT_LOOP);
glVertex3f(0.0f,0.0f,0.0f);
glVertex3f(50.0f, 50.0f,0.0f);
glVertex3f(50.0f, 100.0f,0.0f);
glEnd();
设置线的宽度:
glLineWidth(**);
画直线点画:
首先要启用点画(stippling)
glEnable(GL_LINE_STIPPLE));
glLineStipple(factor,pattern);其中factor是点画乘法因子pattern代表点画模式例如0x5555
画三角形:
glBegin(GL_TRIANGLES);
glVertex2f(0.0f,0.0f);
glVertex2f(50.0f, 50.0f);
glVertex2f(50.0f,0.0f);
glVertex2f(-50.0f,0.0f);
glVertex2f(-75.0f, 50.0f);
glVertex2f(-25.0f,0.0f);
glEnd();
画三角形扇:
glBegin(GL_TRIANGLE_FAN);
glVertex3f(0.0f,0.0f,75.0f);
glColor3f(1.0f,1.0f,1.0f);
……..
glEnd();
创建菜单:
void ProcessMenu(int value)
{
}
然后再main函数里:
glutCreateMenu(ProcessMenu);
glutAddMenuEntry("Toggle depth test",1);
glutAddMenuEntry("Toggle cull backface",2);
glutAddMenuEntry("Toggle outline back",3);
glutAttachMenu(GLUT_RIGHT_BUTTON);
深度测试:一种有效的用于隐藏表面消除的技巧。
当一个像素被绘制时,它将被设置一个值(成为z值),以表示它和观察者之间的距离。以后当这个屏幕位置需要绘制另一个像素时,新像素的z值就会与原来已经存储的那个像素进行比较。如果新的z值更高,他就更靠近观察者。否则,它必须位于原来那个像素的后面。
启用深度测试:
glEnable(GL_DEPTH_TEST);
禁用: glDisable(GL_DEPTH_TEST);
剔除:消除已经知道肯定不会被显示的几何图形
背面剔除,用于消除一个表面的背面
启用:glEnable(GL_CULL_FACE);
禁用:glDisable(GL_CULL_FACE);
多边形模式:
指定只绘制多边形的外框,甚至只绘制点(只有顶点被绘制)。glPolygonMode函数允许多边形作为实心图形、外框或点进行渲染。另外,也可以对多边形的两面都应用这个渲染模式,也可以只对多边形的正面或背面应用这个模式。
线框:glPolygonMode(GL_BACK,GL_LINE); 这里只把背面绘制成一个多边形
实心:glPolygonMode(GL_BACK,GL_FILL);
键盘上下左右操作:
void SpecialKeys(int key, int x, int y)
{
}
在main函数中调用:
隐藏和显示边界:
GLboolean bEdgeFlag = TRUE;
void ProcessMenu(int value)
// Begin the triangles
设置定时器
void Timer(int value)
{
}
int main(int argc, char* argv[])
{
}
裁剪测试
glEnable(GL_SCISSOR_TEST);或者gldisable(GL_SCISSOR_TEST);
void glScissor(GLint
模板测试
glEnable(GL_STENCIL_TEST);或者gldisable(GL_STENCIL_TEST);
void glStencilFunc(GLenum
- OpenGL学习二--基础知识
- OpenGL基础知识(二)
- OpenGL入门学习二
- 学习OpenGL总结二
- OpenGL学习笔记(二)
- OpenGL入门学习[二]
- opengl学习(二)
- OpenGL学习笔记(二)
- OpenGL入门学习[二]
- OpenGL入门学习[二]
- opengl 学习<二>
- OpenGL入门学习[二]
- OpenGL 学习(二)
- OpenGL入门学习[二]
- openGL学习(二)
- openGL ES学习二
- shell基础知识学习二
- Go--基础知识学习二
- android之intent.setFlag
- android学习之广播
- android学习之SimpleDateFormat
- android学习笔记之Fragments
- OpenGL学习一OpenGL学习资源
- OpenGL学习二--基础知识
- android学习之popupWindow
- 又见回文
- Spiral Matrix II
- 在iOS中使用ZXing库
- ArcGIS 无法创建SDE:Failed to setup st_geometry type.
- Android中静态变量的生命周期
- <学习分享>.手势识别
- hdu 1166 敌兵布阵(线段树)