[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

代码如下:

[cpp] view plaincopyprint?

  1. #include <gl\glut.h> //包含OpenGL实用库,这是GLUT头文件好含<GL/gl.h>和<GL/glu.h>
  2. //画图函数
  3. void myDisplay(void)
  4. {
  5. //清除函数
  6. glClear(GL_COLOR_BUFFER_BIT);//masks是bit位的,用于标示要被清除的缓冲区。 这个参数有四种:GL_COLOR_BUFFER_BIT,  GL_DEPTHBUFFER_BIT,GL_ACCUM_BUFFER_BIT  和 GL_STENCIL_BUFFER_BIT。//(颜色缓冲,深度缓冲,累加器缓冲,模板缓冲?)
  7. /*GL_COLOR_BUFFER_BIT
  8. Indicates the buffers currently enabled for color writing.     指出缓冲区当前可用于写入颜色
  9. GL_DEPTH_BUFFER_BIT
  10. Indicates the depth buffer.                                                   指出是深度缓冲区
  11. GL_ACCUM_BUFFER_BIT
  12. Indicates the accumulation buffer.                                       指出累加缓冲区
  13. GL_STENCIL_BUFFER_BIT
  14. Indicates the stencil buffer.                                                  指出模板缓冲区*/
  15. //绘制一个矩形,四个参数标示了位于对角线(左上角)上的两个点的横、纵坐标。
  16. //glRectf(0, 0, 0.5f, 0.5f);
  17. glRectf(0.5, 0.5, 1, 1);
  18. glRectf(0,0,-0.5f,0.5f);
  19. //绘制四个点
  20. glBegin(GL_POINTS);
  21. glVertex2f(0.0f,0.0f);
  22. glVertex2f(0.5f,0.0f);
  23. glVertex2f(0.0f,-0.5f);
  24. glVertex2f(0.5f,-0.5f);
  25. glEnd();
  26. //绘制两条线
  27. glBegin(GL_LINES);
  28. glVertex2f(-1,0.0f);
  29. glVertex2f(-0.5f,0.0f);
  30. glVertex2f(-0.75f,0);
  31. glVertex2f(-0.75f,-0.5f);
  32. glVertex2f(-0.75f,-0.5f);
  33. glVertex2f(-0.85f,-0.4f);
  34. glEnd();
  35. //保证前面的OpenGL命令会立即执行(而不会让他们在缓冲区等待)
  36. glFlush(); //glFlush()清空缓冲区,将指令送往缓硬件立即执行,但是它是将命令传送完毕之后立即返回,不会等待指令执行完毕。当调用glFlush时,物体会一个一个地出现在屏幕上。
  37. //glFinish(); //将缓冲区的指令立即送往硬件执行,但是要一直等到硬件执行完这些指令之后才返回。glFinish通常会带来性能上的损失,GPU和CPU并行性能丧失。Direct3D不支持Finish的概念。
  38. }
  39. int main(int argc, char *argv[])
  40. {
  41. //对GLUT进行初始化,必须在其他GLUT之前调用一次,格式比较死板,一般就照着写一次即可。
  42. glutInit(&argc, argv);
  43. //设置显示方式,GLUT_RGB标示使用RGB颜色,GLUT_SINGLE表示使用单缓冲,与之对应的还有GLUT_DOUBLE(使用双缓冲)
  44. glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
  45. //新建窗口在屏幕中的位置
  46. glutInitWindowPosition(100, 100);
  47. //初始化默认的大小
  48. glutInitWindowSize(400, 400);
  49. //根据前面的信息创建窗口,参数为窗口的标题。注意:这里窗口创建后并不会立马显示到屏幕上,需要执行glutMainLoop()才会显示到屏幕上
  50. glutCreateWindow("Hello OpenGL-Create By 丁小未");
  51. //设置一个函数,当需要进行画图时候,这个函数就会被调用
  52. glutDisplayFunc(&myDisplay);
  53. //进行消息循环,理解为可以显示窗口
  54. glutMainLoop();
  55. return 0;
  56. }

效果图:

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

欢迎关注我的围脖

[OpenGL]环境搭建以及OpenGL初识,布布扣,bubuko.com

时间: 2024-08-02 02:50:26

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

Python环境搭建之OpenGL

以下内容为我python OpenGl 环境搭建历程: win7 64位操作系统,python3.5.3 ,无其他相关. 直接cmd或PowerShell输入以下命令: pip install PyOpenGL PyOpenGL_accelerate 安装失败,提示需安装Microsoft Visual C++ 14.0,让我使用Microsoft Visual C++ build tools.并且后面给出了下载链接http://landinghub.visualstudio.com/visua

OpenGL学习笔记: (1)mac下OpenGL环境搭建

1,OpenGL是什么 OpenGL(全写Open Graphics Library)是个定义了一个跨编程语言.跨平台的编程接口规格的专业的图形程序接口.它用于三维图像(二维的亦可),是一个功能强大,调用方便的底层图形库. 2,OpenGL能做什么 OpenGL能用来开发跨平台的渲染引擎,在Android.OSX.iOS.Windows.PS等平台均可使用 OpenGL(ES). 3,OpenGL不能做什么 OpenGL不能做物理模拟,OpenGL不能做网络通信,一句话,除了渲染以外的事情,Op

TestNG环境搭建以及框架初识

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

opengl基础学习专题 (一 )编程环境搭建

题外话: 第一次在博客园上同大家分享博文.水的的地方,错别字的地方.环境交流.批评.知道了马上改. 以前在百度空间中写技术分享博文,后来百度啥也没说就把整个空间封了.当时感觉 还是有点寒心.只想黑一下它,厂长老了.场子也该换了. 对于想写个oepngl基础学习的专题,主要是网上资源有点老,好多都运行不了,买了红宝书<<OpenGL 编程指南 第8版>>,看了还看,觉得有点专业,优化和技术核心讲的的多. 而且都是代码片段,像自己这种门外汉学习起来还是觉得基础不行.需要恶补一下关于 f

基于OpenGL编写一个简易的2D渲染框架02——搭建OpenGL环境

由于没有使用GLFW库,接下来得费一番功夫. 阅读这篇文章前请看一下这个网页:https://learnopengl-cn.github.io/01%20Getting%20started/02%20Creating%20a%20window/ 以下,我摘取了一点片段 Windows上的OpenGL库 如果你是Windows平台,opengl32.lib已经包含在Microsoft SDK里了,它在Visual Studio安装的时候就默认安装了.由于这篇教程用的是VS编译器,并且是在Windo

vs2012搭建OpenGL环境

1. 下载glut库 glut库地址为:http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip glut全称为:OpenGL Utility Toolkit,也就是OpenGL应用工具包,它建立在OpenGL基础之上,方便开发OpenGL的某些功能,比如我们后面要创建的Windows程序,就可以用glut来方便地构建起一个初始化的Windows程序. 2. 安装glut库 说是安装,其实就是复制. 解压开这个zip包,会

Xcode环境下OpenGL C++ GLFW开发环境搭建

操作系统版本:MacOS Mavericks 10.9.2 Xcode版本:5.0.1 OpenGL版本:4.10 GLFW版本:3.0.4 一.GLFW编译 1.下载并安装cmake(当前最新版本为2.8.12.2) http://www.cmake.org/cmake/resources/software.html 下载cmake-2.8.12.2-Darwin64-universal.dmg文件安装即可 2.下载GLFW源代码(当前最新版本为3.0.4) http://www.glfw.o

OpenGL搭建环境-VS2012【OpenGL】

在学习cocos2dx时,其底层就用到了OpenGL,因此,想要能够精通cocos2dx,还是需要了解OpenGL的. 本着这个目的,开始搭建OpenGL的环境,并进行学习. OpenGL环境的搭建相对比较简单,这里就简单概述一下. 1. 下载glut库 glut库地址为:http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip glut全称为:OpenGL Utility Toolkit,也就是OpenGL应用工具包,它

openGL+VS2012 环境搭建和实现简单程序

在学习cocos2dx时,其底层就用到了OpenGL,因此,想要能够精通cocos2dx,还是需要了解OpenGL的. 本着这个目的,开始搭建OpenGL的环境,并进行学习. OpenGL环境的搭建相对比较简单,这里就简单概述一下. 1. 下载glut库 glut库地址为:http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip glut全称为:OpenGL Utility Toolkit,也就是OpenGL应用工具包,它