`

OpenGL学习笔记之一:第一个OpenGL程序

 
阅读更多

OpenGL函数名称的格式

 

glVertex3f(x, y, z):

gl:属于GL库 GLU库:glu GLUT库:glut

3代表参数个数,f代表x,y,z为float类型

glVertex3fv(p):p为指向float的指针

 

OpenGL不是面向对象的,因此逻辑上的一个函数却对应着多个OpenGL函数

 

第一个 OpenGL程序

 

 

#include "StdAfx.h"
#include "gl/glut.h"


void myDisplay(void)
{
	glClear(GL_COLOR_BUFFER_BIT);
	glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
	glFlush();
}

int main(int argc, char** argv)
{
	glutInit(&argc, argv);
	glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
	glutInitWindowPosition(100, 100);
	glutInitWindowSize(400, 400);
	glutCreateWindow("第一个OpenGl程序");
	glutDisplayFunc(&myDisplay);
	glutMainLoop();

	return 0;
}
 

该程序的作用是在一个黑色的窗口中央画一个白色的矩形。

 

1、glutInit,对 GLUT 进行初始化,这个函数必须在其它的 GLUT 使用之前调用一次。其格式比较死板,

一般照抄这句 glutInit(&argc, argv)就可以了。 

2、 glutInitDisplayMode,设置显示方式,其中GLUT_RGB表示使用RGB颜色,与之对应的还有GLUT_INDEX

(表示使用索引颜色)。GLUT_SINGLE表示使用单缓冲,与之对应的还有 GLUT_DOUBLE (使用双缓冲)。

更多信息,请自己 Google。当然以后的教程也会有一些讲解。 

3、glutInitWindowPosition,这个简单,设置窗口在屏幕中的位置。 

4、glutInitWindowSize,这个也简单,设置窗口的大小。 

5、glutCreateWindow,根据前面设置的信息创建窗口。参数将被作为窗口的标题。注意:窗口被创建后,

并不立即显示到屏幕上。需要调用 glutMainLoop 才能看到窗口。 

6、glutDisplayFunc,设置一个函数,当需要进行画图时,这个函数就会被调用。(这个说法不够准确,但

准确的说法可能初学者不太好理解,暂时这样说吧)。 

7、glutMainLoop,进行一个消息循环。(这个可能初学者也不太明白,现在只需要知道这个函数可以显示

窗口,并且等待窗口关闭后才会返回,这就足够了。

 

 

以 gl开头的函数都是 OpenGL的标准函数:

 

1、glClear,清除。GL_COLOR_BUFFER_BIT 表示清除颜色,glClear 函数还可以清除其它的东西,但这里

不作介绍。 

2、glRectf,画一个矩形。四个参数分别表示了位于对角线上的两个点的横、纵坐标。 

3、glFlush,保证前面的 OpenGL 命令立即执行(而不是让它们在缓冲区中等待)。其作用跟 fflush(stdout)

类似。 

分享到:
评论

相关推荐

    Java OpenGL(JOGL)学习笔记,含代码

    Java OpenGL(JOGL)学习笔记 在学习 JOGL 时,我们需要了解图形显示器是如何工作的。图形显示器是一个由许多像素点组成的绘图区域,图形系统的核心是一个魔法画笔,这支画笔能以非常快的速度移动到一个确定的像素...

    Opengl学习笔记

    ### OpenGL学习笔记关键知识点 #### 一、OpenGL坐标系与绘图函数 - **坐标系定义**:在OpenGL中,坐标系定义了三维空间中物体的位置。X坐标轴从左至右,Y坐标轴从下至上,Z坐标轴从观察者的视角由近及远(即从里至...

    OpenGL学习笔记

    ### OpenGL学习笔记知识点详解 #### 一、OpenGL简介与安装准备 OpenGL(Open Graphics Library)是一种用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。它被广泛应用于游戏开发、图形软件以及...

    Android OpenGL ES 2.0学习书籍.rar

    这本书籍“Android 3D游戏开发技术宝典 OpenGL ES2.0学习”深入浅出地介绍了如何利用OpenGL ES 2.0在Android上构建高性能、视觉震撼的游戏和应用程序。 首先,OpenGL ES 2.0相比其前代1.0,引入了重要的变化,最...

    OpenGL超级宝典 笔记15之前 清单3.12之前所有有关代码.rar

    总的来说,这个压缩包提供了一个全面的学习OpenGL的实践平台,通过这些代码,读者可以深入理解OpenGL的工作原理,掌握图形渲染、变换、光照和相机控制等核心概念,同时也能了解C++在图形编程中的应用。每个文件都是...

    Qt OpenGL纹理映射Demo

    **Qt OpenGL纹理映射Demo详解** 在计算机图形学领域,OpenGL是一种...此外,`OpenGL_Qt学习笔记之_05(纹理映射).pdf`和`opengl_nehe_05`等资源也能提供宝贵的学习材料,帮助开发者掌握纹理映射和OpenGL在Qt中的应用。

    Android学霸学习笔记

    - 建立第一个App:介绍如何创建Android项目和执行程序。 - 创建Android项目:解释如何搭建一个新的Android开发环境。 - 执行Android程序:演示如何运行和测试应用程序。 - 建立简单的用户界面:介绍布局和控件的...

    WebGL学习笔记(一).rar

    - **Three.js**:一个流行的WebGL库,简化了WebGL开发,提供了丰富的功能和良好的文档。 - **WebGL Inspector**:调试工具,帮助检查和理解WebGL渲染管线。 - **Shadertoy**:在线平台,可以探索和分享基于WebGL...

    VS2017OpenGL 配置步骤

    这里,我们将编写一个简单的OpenGL程序,绘制一个红色的正方形: ```cpp #include void display() { glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0, 0.0, 0.0); // 设置颜色为红色 glBegin(GL_QUADS); // 开始...

    opengl学习手记(三)旋转的三维立方体收集.pdf

    总之,这个OpenGL学习笔记展示了如何创建基本的3D立方体,包括设置图形环境、深度测试、视口和投影矩阵的配置,以及使用顶点数据绘制几何体。它是学习OpenGL基础和理解3D图形渲染流程的一个良好起点。

    程序设计学习部分笔记

    Unicode是一种字符编码标准,旨在为世界上所有字符提供一个统一的编码方式。它包括了各种语言的字母、数字以及符号,确保了不同语言之间的文本可以无缝交互。在编程中,使用Unicode有助于处理多语言文本,避免了...

    openGL超级宝典第二版(中文)

    第一部分:OpenGL API基础 这部分是入门者的引导,详细介绍了OpenGL的基础概念和API接口。它包括了OpenGL的安装与配置,以及如何在不同的平台上设置开发环境。此外,还会讲解基本的绘图操作,如绘制点、线和多边形。...

    QT5相关资料及学习笔记

    1. 创建第一个QT5应用:通常从一个简单的“Hello, World!”程序开始,了解如何配置开发环境,创建和运行QT5项目。 2. 掌握QML:学习QML的基本语法和组件,理解其与JavaScript的交互方式,尝试制作动态的UI。 3. 实践...

    OpenGL ES 2.0

    OpenGL ES 2.0是移动设备和嵌入式系统上广泛应用的图形库,它是OpenGL标准的一个子集,专为资源有限但需要高质量3D图形处理能力的设备设计。这个开发包包含了必要的工具类和资源,有助于Android游戏开发者构建高性能...

    Cocos2d-x学习笔记

    6. 编译并运行HelloWorld项目,观察到基本的游戏框架运行在屏幕上,此时Cocos2d-x的入门学习已成功迈出第一步。 此外,学习Cocos2d-x还应该包括以下几个方面: - 掌握Cocos2d-x的基本架构:Cocos2d-x框架中包括...

Global site tag (gtag.js) - Google Analytics