[OpenGL]环境搭建以及OpenGL初识

想往游戏行业发展的话,经常被提及到的就是OpenGL和DirectX,这两者听起来感觉是一门挺高深的技术,今天我也开始摸索学习OpenGL,那么OpenGL到底是什么?它和DirectX有什么区别和联系?

OpenGL初识

OpenGL只是一套图形函数库

DirectX包含图形、声音、输入、网络等模块。

但就图形而论,DirectX的图形库性能不如OpenGL,OpenGL稳定,可以跨平台使用,DirectX只支持Windows平台,所以OpenGL还是有它的优势!OpenGL ES是OpenGL的嵌入设备版本,为了适合潜入设备性能要求较高,从而OpenGL ES删减了一些低性能的操作方式。

OpenGL的优越性:

  • 与C语言紧密结合
  • 强大的可移植性
  • 套性能的图形渲染

官网:http://www.opengl.org/

OpenGL ES 1.X 和OpenGL ES 2.X的区别:

OpenGL ES 1.X:

For fixed function hardware: OpenGL ES 1.1 is defined relative to the OpenGL 1.5 specification and emphasizes hardware acceleration of the API, but is fully backwards compatible with 1.0. It provides enhanced functionality, improved image quality and optimizations to increase performance while reducing memory bandwidth usage to save power. The OpenGL ES 1.1 Extension Pack is a collection of optional extensions added to OpenGL ES 1.1 that reduced variability and bring significant improvements in image quality and performance.

OpenGL ES 2.X:

For programmable hardware:OpenGL ES 2.0 is defined relative to the OpenGL 2.0 specification and emphasizes a programmable 3D graphics pipeline with the ability to create shader and program objects and the ability to write vertex and fragment shaders in the OpenGL ES Shading Language. OpenGL ES 2.0 does not support the fixed function transformation and fragment pipeline of OpenGL ES 1.x.

OpenGL环境搭建

1.下载OpenGL库文件,点击下载

2.glut.h放在了C:\Program Files\Windows Kits\8.0\Include\um\gl 目录下(通过在C盘搜索GL.h得来)

3.glut.lib和glut32.lib放到 E:\Microsoft Visual Studio 11.0\VC\lib

4.glut.dll和glut32.dll放到"C:\Windows\System32"

5.新建空白工程,随便.c或者.cpp

代码如下:

#include <gl\glut.h> //包含OpenGL实用库,这是GLUT头文件好含<GL/gl.h>和<GL/glu.h>

//画图函数
void myDisplay(void)
{
	//清除函数
	glClear(GL_COLOR_BUFFER_BIT);//masks是bit位的,用于标示要被清除的缓冲区。 这个参数有四种:GL_COLOR_BUFFER_BIT,  GL_DEPTHBUFFER_BIT,GL_ACCUM_BUFFER_BIT  和 GL_STENCIL_BUFFER_BIT。//(颜色缓冲,深度缓冲,累加器缓冲,模板缓冲?)
	/*GL_COLOR_BUFFER_BIT
		Indicates the buffers currently enabled for color writing.     指出缓冲区当前可用于写入颜色
	GL_DEPTH_BUFFER_BIT
		Indicates the depth buffer.                                                   指出是深度缓冲区
	GL_ACCUM_BUFFER_BIT
		Indicates the accumulation buffer.                                       指出累加缓冲区
	GL_STENCIL_BUFFER_BIT
		Indicates the stencil buffer.                                                  指出模板缓冲区*/

	//绘制一个矩形,四个参数标示了位于对角线(左上角)上的两个点的横、纵坐标。
	//glRectf(0, 0, 0.5f, 0.5f);
	glRectf(0.5, 0.5, 1, 1);
	glRectf(0,0,-0.5f,0.5f);

	//绘制四个点
	glBegin(GL_POINTS);
	glVertex2f(0.0f,0.0f);
	glVertex2f(0.5f,0.0f);
	glVertex2f(0.0f,-0.5f);
	glVertex2f(0.5f,-0.5f);
	glEnd();

	//绘制两条线
	glBegin(GL_LINES);
	glVertex2f(-1,0.0f);
	glVertex2f(-0.5f,0.0f);
	glVertex2f(-0.75f,0);
	glVertex2f(-0.75f,-0.5f);
	glVertex2f(-0.75f,-0.5f);
	glVertex2f(-0.85f,-0.4f);
	glEnd();

	//保证前面的OpenGL命令会立即执行(而不会让他们在缓冲区等待)
	glFlush(); //glFlush()清空缓冲区,将指令送往缓硬件立即执行,但是它是将命令传送完毕之后立即返回,不会等待指令执行完毕。当调用glFlush时,物体会一个一个地出现在屏幕上。
	//glFinish(); //将缓冲区的指令立即送往硬件执行,但是要一直等到硬件执行完这些指令之后才返回。glFinish通常会带来性能上的损失,GPU和CPU并行性能丧失。Direct3D不支持Finish的概念。

}
int main(int argc, char *argv[])
{
	//对GLUT进行初始化,必须在其他GLUT之前调用一次,格式比较死板,一般就照着写一次即可。
	glutInit(&argc, argv);

	//设置显示方式,GLUT_RGB标示使用RGB颜色,GLUT_SINGLE表示使用单缓冲,与之对应的还有GLUT_DOUBLE(使用双缓冲)
	glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);

	//新建窗口在屏幕中的位置
	glutInitWindowPosition(100, 100);

	//初始化默认的大小
	glutInitWindowSize(400, 400);

	//根据前面的信息创建窗口,参数为窗口的标题。注意:这里窗口创建后并不会立马显示到屏幕上,需要执行glutMainLoop()才会显示到屏幕上
	glutCreateWindow("Hello OpenGL-Create By 丁小未");

	//设置一个函数,当需要进行画图时候,这个函数就会被调用
	glutDisplayFunc(&myDisplay); 

	//进行消息循环,理解为可以显示窗口
	glutMainLoop();

	return 0;
}

效果图:

部分解释参考每行代码之后的注释。

欢迎关注我的围脖

==================== 迂者 丁小未 CSDN博客专栏=================

MyBlog:http://blog.csdn.net/dingxiaowei2013             MyQQ:1213250243

Unity QQ群:375151422      cocos2dx QQ群:280818155

====================== 相互学习,共同进步 ===================

时间: 2024-12-23 19:14:10

[OpenGL]环境搭建以及OpenGL初识的相关文章

TestNG环境搭建以及框架初识

TestNG的英文为Test Next Generation, 听上去好像下一代测试框架已经无法正常命名了的样子,哈哈,言归正传,啥是TestNG呢,它是一套测试框架,在原来的Junit框架的思想基础上开发的新一代测试框架,既然这么牛b,那果断弄来试试.本文主要从安装步骤-->第一个测试例子-->再多一点例子-->框架分析-->suite文件的书写-->总结结束. 安装步骤: 1. 第一步,当然首先是在你的java sdk, eclipse ide, system envir

gltools-关于opengl环境配置的问题

问题描述 关于opengl环境配置的问题 按照教程上的,先编译一下, 把 x:xSB5SrcGLToolssrc 目录下的 .cpp文件复制到 x:xgltoolsgltools. 把 x:xSB5SrcGLToolsinclude 目录下的 .h文件复制到 x:xgltoolsgltools. 分别在头文件和源文件上右键 添加->现有项 把 .h 和 .cpp 文件添加到项目. 但却出现了以下错误: 错误 1 error C1083: 无法打开包括文件: "math3d.h":

安卓环境搭建

原文出处:http://www.cnblogs.com/ybgame/archive/2012/06/07/2540693.html [一 写在前面] 环境搭建的顺序是这样 1.JDK&JRE 安装JDK会顺带安装JRE的,这一步是为了可以编写和允许普通的JAVA程序 2.Eclipse JAVA 的 IDE,这一步是为了方便地开发JAVA程序 3.CDT 是Eclipse的一个插件,这一步是为了可以引入C++ 4.ADT 是Eclipse的一个插件,这一步是为了管理安卓开发库 5.ADK 上一

《Android应用开发与系统改造实战》——1.5节Android NDK开发环境搭建

1.5 Android NDK开发环境搭建 Android应用开发与系统改造实战 1.5.1 Android NDK简介 Android NDK是编译嵌入在Android应用中的原生代码(C或C++)的工具. Android应用运行在Dalvik虚拟机上.NDK允许开发者用原生代码(C或C++)实现应用的一部分.这将给某些应用带来好处,这种方式可重用代码,而且在某些情况下可加快运行速度. NDK提供了将C和C++源代码生成原生代码库的工具和文件:提供了将原生库嵌入apk文件的方法:提供了兼容An

J2ME开发环境搭建 之 EclipseMe

J2ME开发环境搭建 之 EclipseMe   第一节    初识Eclipse Eclipse是一个开发源代码,基于java的可扩展开发平台,它是在OSI(Open Software Initiative 开发源代码计划)认可的通用公共许可证(CPL)版下被授予许可证的集成开发平台(IDE).作为当今最流行的java开发IDE之一,java社群使用Eclipse以及基于Eclipse技术而来的IBM Websphere的开发者已经超过了半数. Eclipse本身只是一个框架和一组响应的服务,

Python学习笔记(一)(基础入门之环境搭建)_python

  Python入门       本系列为Python学习相关笔记整理所得,IT人,多学无害,多多探索,激发学习兴趣,开拓思维,不求高大上,只求懂点皮毛,作为知识储备,不至于落后太远.      本文主要介绍Python的相关背景,环境搭建. 一.了解Python      1,关于Python的语言特点:      借用Python官网Https://www.python.org的解释: Python is powerful... and fast; plays well with other

PHP开发环境搭建详细教程

     首先你需要安装Apache Server,这里以当前最新版Apache Server2.4为例进行说明,可惜官网并没有提供最新版的msi安装包,连编译后的binary二进制压缩包都没提供,不过我已经编译并上传到我的百度网盘,下载地址如下:       Apache Server2.4最新版安装包   下载下来后直接解压到任意目录,如图:  然后你需要安装Apache Server系统服务,先cd 到apacher server2.4/bin下,然后执行如下命令: Java代码   ht

【物联网】QCA4010开发环境搭建(二)(解决WIN10下不能驱动问题)

更多资料,请参考:中电港论坛 http://bbs.cecport.com/forum.php?mod=forumdisplay&fid=64&page=1 感谢中电港,低价QCA4010开发板入手,终于腾出时间来研究一下这个高大上的开发板 4010与4004一样,内部集成了Tensilica Xtensa处理器,主频可达130MHz.Xtensa处理器是Tensilica公司推出的一个可自由装组.可弹性扩张,并可以自动合成的处理器核心,它的指令集构架 (ISA) 拥有专利权,32位处理器

第一章 andriod studio 安装与环境搭建

原文 http://blog.csdn.net/zhanghefu/article/details/9286123 第一章   andriod studio 安装与环境搭建   一.Android Studio简介 Android Studio是Google新发布的Android应用程序开发环境,Android Studio是基于IntelliJ IDEA开发而成的.在Android Studio开发环境中,Android开发者可以非常方便地调试Android应用程序,Android Studi