热舞美女大长腿视频合集,开放环境下的性感酒吧风情
在湖南卫视正热播的一档节目中...
2024-08-20
最近在课程上在学习计算机图像,对于突然冒出来的好多glut库里的函数感觉很难招架。把示例代码一行行百度下来,总算是差不多理解了大概的意思,在这里分享一下绘制图像需要的基础的函数。
1. 配置环境
对于openGL的环境配置可以看我之前写的环境配置的文章,点击文章底部左下角“阅读原文”就可以访问原文章。
2. main函数设置
基本设置
在绘制图像前还需要对程序进行初始化
在main函数里需要添加初始化语句
//这个函数用来初始化 GLUT 库glutInit(&argc, argv);//设置颜色模式和缓冲区格式glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);颜色模式:
参数有,GLUT_RGBA模式;GLUT_RGB模式 ;GLUT_INDEX模式
缓冲区类型 :GLUT_SINGLE——单缓冲窗口;GLUT_DOUBLE——双缓冲窗口
GLUT_SINGLE 实际上就是将所有的绘图指令在窗口上执行,一般只用于显示单独的一副非动态的图
GLUT_DOUBLE 实际上绘图指令是在一个缓冲区完成,在绘图指令完成之后,再通过交换指令把完成的图形立即显示在屏幕上,一般用于生成动画效果
窗体设置
对绘制的窗体的设置,同样可以写入main函数中
//设置初始窗口的位置glutInitWindowPosition(100, 100); //设置初始窗口的大小glutInitWindowSize(400, 400); //根据前面设置建立窗口,参数设置为变体glutCreateWindow("实验"); //颜色函数设置Init(); //绘图时被调用的函数glutDisplayFunc(myDisplay); //改变窗体大小时进行图像重绘glutReshapeFunc(Reshape); //进行消息循环,用于显示窗体,窗体关闭后自动退出循环glutMainLoop();glutInitWindowPosition(int x, int y)窗口左上角相对于计算机坐标(x,y)
glutDisplayFunc(myDisplay)其中的 myDisplay 参数为自己设置的成像函数
glutReshapeFunc(Reshape)其中的 Reshape 参数为自己设置的重新成像函数
Reshape函数设置
void Reshape(int w, int h) { //glViewport负责把视景体截取的图像按照怎样的高和宽显示到屏幕上 gViewport(0, 0, (GLsizei)w, (GLsizei)h); //将当前矩阵指定为投影矩阵 glMatrixMode(GL_PROJECTION); //把矩阵设为单位矩阵 lLoadIdentity(); //让中心坐标(0,0)变成窗口的左下角 gluOrtho2D(0.0, (GLdouble)w, 0.0, (GLdouble)h);}颜色函数设置
void Init(){ //设置颜色 glClearColor(0.0, 0.0, 0.0, 0.0); //颜色过渡形式 glShadeModel(GL_FLAT); }glShadeModel 函数用于控制opengl中绘制指定两点间其他点颜色的过渡模式
参数一般为 GL_SMOOTH(默认)自然过渡;GL_FLAT 不过渡,颜色有层次
函数用于控制opengl中绘制指定两点间其他点颜色的过渡模式 参数一般为 GL_SMOOTH(默认)自然过渡 GL_FLAT 不过渡,颜色有层次
3.绘图函数 myDisplay 函数设置
void myDraw(int a, int b) { /*other code*/ //指定栅格化点的直径 glPointSize(1); //绘图准备 glBegin(GL_POINTS); glVertex2i(/*other code*/); lEnd(); }}void myDisplay(void) { myDraw(a,b) glFlush();//强制刷新缓冲,保证绘图命令将被执行}/* other code */ 为绘图必要的条件设置
glPointSize(1) 表示图像直径为一个像素点,其中的参数可以决定整体图像的粗细程度
glBegin() 是和 glEnd() 结合起来使用
函数原型 void glBegin(GLenum mode)
mode:创建元素的类型,比如:点,线等。可以是以下数值:
| 函数 | 说明 |
| GL_POINTS | 把每个顶点作为一个点进行处理 |
| GL_LINES | 把每个顶点作为一个独立的线段 |
| GL_LINE_STRIP | 绘制从第一个顶点到最后一个顶点依次相连的一组线段 |
| GL_LINE_LOOP | 绘制从第一个顶点到最后一个顶点首尾相连的一组线段 |
| GL_TRIANGLES | 把每个顶点作为一个独立的三角形 |
| GL_TRIANGLE_STPIP | 绘制一组相连的三角形 |
| GL_QUADS | 绘制由四个顶点组成的一组单独的四边形 |
| GL_QUAD_STRIP | 绘制一组相连的四边形 |
在 glBegin() 和 glEnd() 之间需要调用函数绘图,glVertex() 设置顶点坐标
glVertex2i 输入整型的点
glVertex2f 输入单精度的点
glVertex2d 输入双精度的点
除此之外还有其他可以在 glBegin() 和 glEnd() 之间调用的函数
| 函数 | 说明 |
| glVertex() | 设置顶点坐标 |
| glColor() | 设置当前颜色 |
| glIndex() | 设置当前颜色表 |
| glNormal() | 设置法向坐标 |
| glCoord() | 产生坐标 |
| glCallList(),glCallLists() | 执行显示列表 |
| glTexCoord() | 设置纹理坐标 |
| glEdgeFlag() | 控制边界绘制 |
| glMaterial() | 设置材质 |
4.示例代码:直线的绘制
#include <GL/glut.h>#include <math.h>void myDraw(int x0, int y0, int x1, int y1) { int m = 0; if (abs(x1 - x0) >= abs(y1 - y0)) m = abs(x1 - x0); else m = abs(y1 - y0); float dx = (float)(x1 - x0) / m; float dy = (float)(y1 - y0) / m; float x = x0; float y = y0; glPointSize(1); for (int i = 0;i < m;i++) { glBegin(GL_POINTS); glVertex2i((int)(x + 0.5), (int)(y + 0.5)); glEnd(); x += dx; y += dy; }} void myDisplay(void) { myDraw(0, 0, 200, 300); glFlush();}void Init() { glClearColor(0.0, 0.0, 0.0, 0.0); glShadeModel(GL_FLAT);}void Reshape(int w, int h) { glViewport(0, 0, (GLsizei)w, (GLsizei)h); lMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0.0, (GLdouble)w, 0.0, (GLdouble)h);}int main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); glutInitWindowPosition(100, 100); glutInitWindowSize(400, 400); glutCreateWindow("实验1 直线绘制"); Init(); glutDisplayFunc(myDisplay); glutReshapeFunc(Reshape); lutMainLoop(); return 0;}
以上内容就是为大家推荐的opengl配置环境(模拟器用opengl还是directx)最佳回答,如果还想搜索其他问题,请收藏本网站或点击搜索更多问题
内容来源于网络仅供参考版权声明:所有来源标注为小樱知识网www.xiaoyin02.com的内容版权均为本站所有,若您需要引用、转载,只需要注明来源及原文链接即可。
本文标题:opengl配置环境(模拟器用opengl还是directx)
本文地址:https://www.xiaoyin02.com/shcs/97295.html
相关文章
手机怎么那么贵,为什么苹果机配置差其他手机那么多? 由于底层架构不同的关系,一般苹果手机在使用后,不怎么需要自己去打理,而安卓手机刚开始操...
2023-04-21
手机配置是怎么看,realme查看电池容量? 1、在手机中选择设置的图标进入。 2、进入手机的设置列表后,选择电池的选项进入。 3、在电池设置界面,可以...
2023-04-21
热点文章
2021年独生子女补贴新政策是真的吗(独生子女证有有效期吗)
2021年国庆节阅兵仪式几点开始几点结束(2021年国庆节还有阅兵吗)
鼠目寸光一点红是什么生肖动物(鼠目寸光一点红)指什么生肖,紧密
k0到k9的玩法大全(强制gc的玩法和注意事项)
入土为安是什么生肖《入土为安》打一个生肖动物,词语解释
浙江12月底全面停工是真的吗(浙江什么时候放假停工)
如何做t(t怎么把p做哭)
北京口碑最差的三甲医院(北京301医院最擅长什么)