opengl配置环境(模拟器用opengl还是directx)

最近在课程上在学习计算机图像,对于突然冒出来的好多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 
#include 
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 
秒鲨号所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈!本站将在三个工作日内改正。
(0)

大家都在看

  • imdb电影排行榜(全球电影排行IMDB)

    IMDb是许多人选择电影的重要参考,满分10分的评分方式,参考的是一般观众的口碑,因此评价的角度最贴近观众的想法。今天来看看2021IMBb最受欢迎电影前10名!跟着挑片绝不踩雷~…

    2022年6月17日 投稿
  • 适合懒人的工作(在家不上班干啥挣钱)

    高薪资是诸多打工人所追求的,很多人的“小目标”就是实现月薪过万。这里要说一下在当下我国市场中,月薪过万算是一个不错的收入水平了,就算是在北京、上海这样的一线城市依旧是如此。 曾经有…

    2022年7月3日 投稿
  • 中国有多少家上市公司(全中国有多少家上市公司)

    不少人可能还沉浸在中国“世界500强”企业数量跃居世界第一而且连续两年超过美国的喜悦之中,但实际情况可能并没那么乐观!从产业的角度来看,中国的产业老大企业是24家,美国73家,我们…

    2022年5月19日 投稿
  • 电脑如何在线去除水印?分享在线快速去水印的方法

    我们经常会在网上找一些心仪的壁纸,头像或图片素材,但是往往会带有水印,有些水印直接影响了图片整体的美观,那么如何在线去除水印呢?有什么方法能快速去除水印,且不需要下载软件,用完即走…

    2022年5月13日 投稿
  • 电子菜谱系统制作(教你制作超实用的电子菜单)

    你是否羡慕“海底捞”的人满为患?听到大家都在讨论的“数字化餐饮”是否也曾心痒痒,也想一探究竟?是否也想借互联网的风潮,打造属于自己的数字化餐饮平台?使用纸质菜单想要更改菜品价格或者…

    2022年1月5日 投稿
  • cad转pdf免费软件(免费的cad转pdf转换器)

    对于从事设计相关工作的朋友来说,CAD肯定再熟悉不过了。一些有特殊要求的CAD文件,需要将其转换成为PDF文件以方便保存、传输、打印,同时还得保证设计图稿的安全性,所以将CAD文件…

    2022年2月16日 投稿
  • 新能源汽车买什么好(新能源汽车买什么牌子好)

    新能源车目前在市面上的占比越来越大,但由于不再依赖变速箱和发动机的技术,因此入场的车企过多,车友想要筛选出好车,难度比以前更大了。当然,不是说造车的新势力都不行,而是筛选难度大,从…

    2022年5月31日 投稿
  • 小鹏汽车回应高管年薪超4亿(金融圈炸锅)

    2月16日,@钛媒体发布了高管薪酬排行TOP20榜单及高管个人年薪TOP50榜单,其中高管年薪排名第二的是小鹏汽车,已披露的8个董事合计年薪为4.4亿元,个人年薪排名第一的是小鹏汽…

    2022年2月19日
  • 装系统的软件哪个好用(一键重装系统推荐)

    一键重装系统软件,老白菜一键重装系统软件是网友推荐使用的一键重装系统软件,老白菜一键重装系统软件傻瓜式的操作,流水线操作流程,装机无需任何电脑技术,任何人都能轻松的装机 1.将制作…

    2022年2月25日 投稿
  • 万圣节什么时候(万圣节是几月几日?)

    万圣节什么时候(万圣节是几月几日?) 万圣节,是西方的一个传统节日,是赞美秋天,祭祀亡魂,祈福平安的日子,相当于中国的中元节,具体时间是每年阳历的11月1日,不过在现在绝大多数人都…

    2022年5月23日
品牌推广 在线咨询
返回顶部