OpenGL 描点

摘自:http://blog.sina.com.cn/s/blog_4c7fa77b010007fr.html

#include <windows.h> // 根据系统需要

#include <gl/gl.h>

#include <gl/glut.h>

void myInit(void)

{

glClearColor(1.0,1.0,1.0,0.0); // 设置白色背景

glColor3f(0.0f,0.0f,0.0f);  // 设置绘图颜色

glPointSize(8.0); // 一个点是4×4像素

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

gluOrtho2D(0.0,640.0,0.0,480.0);

}

void myDisplay(void)

{

glClear(GL_COLOR_BUFFER_BIT); // 清空显示

glBegin(GL_POINTS);

glVertex2i(100,50);  // 绘制3个点

glVertex2i(100,130);

glVertex2i(150,130);

glEnd();

glFlush(); // 将所有的输出显示出来

}

void main(int argc, char** argv)

{

glutInit(&argc,argv); // 初始化工具套件

glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); // 设置显示模式

glutInitWindowSize(640,480); // 设置窗口尺寸

glutInitWindowPosition(100,150); // 设置窗口在屏幕上的位置

glutCreateWindow("my first attempt"); // 打开屏幕窗口

glutDisplayFunc(myDisplay); // 注册重新绘制函数

myInit();

glutMainLoop(); // 进入不断的循环

}

先看一下主函数,在主函数中要进行几个操作:

初始化的工作,包括工具套件的初始化还有自定义的初始化(myInit);窗口设置(窗口大小,位置,显示模式等);注册回调函数等。如果使用事件驱动的话,必须添加glutMainLoop();使程序进入到等待事件发生的状态

使用glut可以很方便地进行事件驱动函数的注册,如注册鼠标动作只需:

glutMouseFunc(myMouse);

这样就注册了鼠标动作响应函数myMouse,可以直接在myMous函数里添加鼠标动作所执行的操作,前面程序中glutDisplayFunc(myDisplay); 注册了重绘函数myDisplay,当窗口重绘时就会执行myDisplay函数的内容,即绘制三个点。

再看看这一段

glBegin(GL_POINTS);

glVertex2i(100,50);  // 绘制3个点

glVertex2i(100,130);

glVertex2i(150,130);

glEnd();

这一段是绘制三个点的函数。在OpenGL中,绘制点、线、拆线、多边形等对象时必须传送一序列的点,这些点必须处于glBegin()和glEnd()之间,glBegin()里的参数确定要画哪个对象,这里用的GL_POINTS是用于绘制点的,这个常量内置于OpenGL中,类似的常量还有GL_LINES,GL_POLYGON等。

再看看glVertex2i这个函数,在OpenGL中很多函数都跟这个函数一样具有几个可变的部分,gl前缀,Vertex基础命令,2参数数目,i参数类型,i表示参数为整型,如果不考虑参数类型时可用*。

注:gl里使用的整型数为32位,如果在系统里使用的是16位可能会造成错误。在定义参数时可以使用gl的类型,如GLint,GLfloat等。

时间: 2024-10-14 20:39:06

OpenGL 描点的相关文章

OpenGL Shader源码分享

Opengl shader程序,旗帜混合纹理加载,通过N张图片,能够组合出数百个:http://www.eyesourcecode.com/thread-39015-1-1.html 用GLSL做了一个可以描出物体的边的shader:http://www.eyesourcecode.com/thread-41503-1-1.html GLSL SHADER实现的机器人,手臂可以动:http://www.eyesourcecode.com/thread-21261-1-1.html 更多OpenG

OpenGL编程-OpenGL框架-win32项目

在win32项目中开发的程序 小知识: 控制台应用程序运行就是dos的界面 项目一般采用了可视化开发 开发出来的东西就像QQ之类的 是有窗口界面的 程序运行结果是这样的 源代码:对第45行进行覆盖 1 #include <windows.h> //Windows的头文件 2 #include <gl\gl.h> //包含OpenGL基本库 3 #include <gl\glu.h> //包含OpenGL实用库 4 #include <gl\glaux.h>

OpenGL编程 基础篇(五)世界窗口和视口

一.基本定义 世界窗口:在世界坐标系中定义一个对齐的矩形(aligned rectangle,即矩阵的边与坐标轴平行)的窗口,这个世界窗口外的部分被裁减并不被绘制.OpenGL会自动地做剪裁. 视口:在显示器的屏幕窗口上定义一个对齐的矩形的视口,OpenGL会自动建立世界窗口和视口的变换(包括缩放和平移).当世界窗口中所有对象都被绘制时,对象在世界窗 口中的部分会被自动地映射到视口中----换句话说,被映射到屏幕坐标中,即像素在显示器上的坐标. 二.相关函数介绍 1.对于二维绘图来说,世界窗口由

转:openGL入门(2)

本次课程所要讲的是绘制简单的几何图形,在实际绘制之前,让我们先熟悉一些概念. 一.点.直线和多边形 我们知道数学(具体的说,是几何学)中有点.直线和多边形的概念,但这些概念在计算机中会有所不同. 数学上的点,只有位置,没有大小.但在计算机中,无论计算精度如何提高,始终不能表示一个无穷小的点.另一方面,无论图形输出设备(例如,显示器)如何精确,始终不能输出一个无穷小的点.一般情况下,OpenGL中的点将被画成单个的像素(像素的概念,请自己搜索之~),虽然它可能足够小,但并不会是无穷小.同一像素上,

android opengl es 源码

[转自:http://blog.csdn.net/happyhell/article/details/6086973] The entire OpenGL ES API on Android is implemented in three libraries, located under /system/lib (for more information about OpenGL ES visit the official Khronos page): * libEGL.so: implemen

【OpenGL】第二篇 Hello OpenGL

------------------------------------------------------------------------------------------------------------------------------- 就像学习其他编程语言一样,为了顺利写下第一个OpenGL程序 我们必须不辞辛苦的先铺好砖块,搭建好环境…… 所以接下来让我先把所需要的库的环境安置好,再开始coding. ------------------------------------

OpenGL蓝宝书第六章代码疑虑:为什么使用了GL_TEXTURE_1D??纹理和顶点间的映射是如何实现?

遇到一个大问题,明明加载纹理绑定的是GL_TEXTURE_2D glUniform1i(locCloudTex, 1); //明明默认为0,参数却不是0. 可是原书中代码确是 glGenTextures(1, &uiTexture); glBindTexture(GL_TEXTURE_1D, uiTexture); // LoadTGATexture("Clouds.tga", GL_LINEAR, GL_LINEAR, GL_CLAMP_TO_EDGE); glUniform

OpenGL - obj文件的导入

http://blog.csdn.net/silangquan/article/details/9707347 Obj文件简介 OBJ文件是Alias|Wavefront公司为它的一套基于工作站的3D建模和动画软件"Advanced Visualizer"开发的一种标准3D模型文件格式,很适合用于3D软件模型之间的互导,也可以通过Maya读写.比如你在3dsMax或LightWave中建了一个模型,想把它调到Maya里面渲染或动画,导出OBJ文件就是一种很好的选择.目前几乎所有知名的3

OpenGL学习系列第二篇

在这个教程里,我们一起来玩第一个OpenGL程序.它将显示一个空的OpenGL窗口,可以在窗口和全屏模式下切换,按ESC退出.它是我们以后应用程序的框架. 在CodeBlock里创建一个新的GLUT Win32程序(不是console控制台程序)后,我们还需要链接OpenGL库文件. 代码的前4行包括了我们使用的每个库文件的头文件.如下所示: #include <windows.h>// Windows的头文件 #include <glew.h>       // 包含最新的gl.