基于freeglut的使用入门 三角形及多个图像绘制
来源:互联网 发布:国内微电网数据统计 编辑:程序博客网 时间:2024/06/07 22:31
前言:
课程最近开始学习使用OpenGL库函数进行图像处理,个人而言非常陌生,记录一下以便未来学习时候查阅。
主题:
绘制图形主要运用了glBegin()和glEnd()搭配的函数。在我们没有加入任何位移函数的时候,默认在我们画布的正中心即(0,0,0)为中点。
glBegin()中的参数规定了画的是什么图像。部分参数值对应图象会在下文中提及。
在同一组Begin()和End()中间可加入多个图形绘制,后绘制的图形会遮挡前方图形。而且他们共享同一个中点。
我们可以使用多组glBegin()和glEnd()通过glTransted()来构造我们的图案。由于还只是入门级别,这里我直接平面绘图的方式,所有函数中只涉及x,y轴,z轴没有提及。
好的直接上代码,其中glColor3f控制每个顶点的RBG值。背景初始化默认是黑色,我这里加入代码改变了颜色
#include "stdafx.h"#include <GL/freeglut.h>void helloOpengl(void) {glClearColor(1.0, 1.0, 0.6, 1.0); //改变默认背景有颜色为浅黄色,要写在glLoadIdentity()前glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);glLoadIdentity();glBegin(GL_TRIANGLES);{//glColor3f(0.0f, 1.0f, 0.0f);glVertex2f(0.0, 0.3);//glColor3f(1.0f, 0.0f, 0.0f);glVertex2f(-0.3, -0.3);//glColor3f(0.0f, 0.0f, 1.0f);glVertex2f(0.3, -0.3);}glEnd();glTranslated(0.3, 0.3, 0);glColor3f(1.0f, 0.0f, 1.0f);glBegin(GL_QUADS); {glVertex3f(-0.2f, 0.2f, 0.0f); glVertex3f(0.2f, 0.2f, 0.0f); glVertex3f(0.2f, -0.2f, 0.0f); glVertex3f(-0.2f, -0.2f, 0.0f); }glEnd();glutSwapBuffers();}int main(int argc, char *argv[]) {glutInit(&argc, argv);glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);glutInitWindowPosition(100, 100);glutInitWindowSize(640, 640);glutCreateWindow("HelloTriangle");glutDisplayFunc(helloOpengl);glutMainLoop();return 0;}
这里环境简单配置了freeglut,GLFW的配置一直有部分问题,等我解决后再写一下。
额外:
提供几个其他博客看到的Begin中的参数,出处已标
GL_POINTS:把每个顶点作为一个点进行处理,顶点n定义了点n,绘制N个点。
GL_LINES: 把每个顶点作为一个独立的线段,顶点2n-1和2n之间定义了n条线段,绘制N/2条线段
GL_LINE_STRIP:绘制从第一个顶点到最后一个顶点依次相连的一组线段,第n和n+1个顶点定义了线段n,绘制n-1条线段。
GL_LINE_LOOP: 绘制从第一个顶点到最后一个顶点依次相连的一组线段,然后最后一个顶点和第一个顶点相连,第n和n+1个顶点定义了线段n,绘制n条线段。
GL_TRIANGLES: 把每个顶点作为一个独立的三角形,顶点3n-2,3n-1和3n定义了第n个三角形,绘制了N/3个三角形。
GL_TRIANGLE_STPIP:绘制一组相连的三角形,对于奇数n,顶点n,n+1,和n+2定义了第n个三角形;对于偶数n,顶点n+1,n和n+2定义了第n个三角形,绘制N-2个三角形。
GL_QUADS: 绘制由四个顶点组成的一组单独的四边形。顶点4n-3,4n-2,4n-1和4n定义了第n个四边形。绘制了N/4个四边形。
GL_QUAD_STRIP:绘制一组相连的四边形。每个四边形是由一对顶点及其后给定的一对顶点共同确定的。顶点2n-1,2n,2n+2和2n+1定义了第n个四边形,绘制了N/2-1个四边形。
GL_POLYGON:绘制了一个凸多边形。顶点1到n定义了这个多边形。
以上参考:http://blog.csdn.net/aa941096979/article/details/50843596
- 基于freeglut的使用入门 三角形及多个图像绘制
- 《GLSL渲染语言入门与VBO、VAO使用:绘制一个三角形》的正确版本及源代码
- OpenGL多边形的绘制(多个三角形连接)
- 基于echars的图像绘制
- 我的第一个DirectX程序界面及三角形的绘制
- 基于Android的OpenGL—在 GLSurfaceView上绘制三角形和使用投影和相机视图
- 使用unity绘制旋转的三角形
- 使用directx绘制三角形
- 使用CSS绘制三角形
- 使用opengl绘制三角形
- 使用CSS绘制三角形
- 使用CSS绘制三角形
- opencv图像直方图的计算及绘制
- 纯CSS绘制三角形(多个角度)
- 纯CSS绘制三角形(多个角度)
- 在canvas里绘制多个图像并且旋转图像
- OpenGL 入门基础教程 —— 在第一个窗口绘制一个三角形
- Android 图像绘制之Matrix 的使用
- 设计模式之单例模式
- 有关单链表的面试题分析及代码实现
- C++ _deslspec的使用
- 《深入理解java虚拟机-高效并发》读书笔记
- android开发状态栏相关汇总
- 基于freeglut的使用入门 三角形及多个图像绘制
- hadoop集群启动后,两个namenode都是standby
- 学生信息管理系统
- BroadcastReceiver 启动activity(在activity之外启动一个activity)
- 研发流程学习
- <c:forEach varStatus="status">中 varStatus的属性简介
- Java 解决采集UTF-8网页空格变成问号乱码
- opencv 示例
- 聊聊并发 深入分析ConcurrentHashMap