初识OpenGL
来源:互联网 发布:linux管道符号怎么打 编辑:程序博客网 时间:2024/06/04 19:58
之前介绍过OpenGL在VS2010上的安装,相信这个不难,不过需要记得每次在建立OpenGL工程的时候需要加载相关的lib库文件,如opengl32.lib;glu32.lib;glut32.lib
这次看看OpenGL在画二维图形的时候的基本构成。
#include <windows.h>#include <gl/glut.h>#include <cstdlib>#include <iostream>#pragma comment(lib, "glut32.lib")void Display();void Load();void init();struct vertex //x,y,z points{float x;float y;float z;};struct tri //Endpoint definition{struct vertex a;struct vertex b;};struct model //Global structure{struct tri* tris; //Lineint tris_num; //Number of input vertex};model test;int main(int argc, char* argv[]){glutInit(&argc, argv);glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); //Single cache and RGBA modelglutInitWindowPosition(200, 100);glutInitWindowSize(500, 500);glutCreateWindow("demo"); // name of windowinit();Load();glutDisplayFunc(Display); //RegisterglutMainLoop(); // Enter main loop to dealif (test.tris)free(test.tris);return 0;} //end mainvoid Load() // Read the data of Coord{if (test.tris)free(test.tris);FILE* file = fopen("coord.txt", "r");int i = 0;if (!file)return;fscanf(file, "%d", &test.tris_num);test.tris = (tri*)malloc(sizeof(struct tri) * test.tris_num);while (i < test.tris_num){fscanf(file, "%f%f%f", &test.tris[i].a.x, &test.tris[i].a.y, &test.tris[i].a.z);fscanf(file, "%f%f%f", &test.tris[i].b.x, &test.tris[i].b.y, &test.tris[i].b.z);++i;}fclose(file);} //end Loadvoid Display() //OpenGL display{int i = 0;glClear(GL_COLOR_BUFFER_BIT); //Clear all pixels//glMatrixMode(GL_PROJECTION);//gluPerspective(45.f, 1.f, 0.f, 100.f);//glMatrixMode(GL_MODELVIEW);//gluLookAt(0.f, 0.f, 5.f, 0.f, 0.f, 0.f, 0.f, 1.f, 0.f);glColor3f(1.0, 1.0, 1.0);glBegin(GL_LINES); //Draw line beginningwhile (i < test.tris_num){glVertex3f(test.tris[i].a.x, test.tris[i].a.y, test.tris[i].a.z);glVertex3f(test.tris[i].b.x, test.tris[i].b.y, test.tris[i].b.z);++i; }glEnd(); //Draw line endglFlush();}// end Displayvoid init() //OpenGL init{glClearColor(0.0, 0.0, 0.0, 0.0) ; //Clear color specified/* Init view frustum */glMatrixMode(GL_PROJECTION);glLoadIdentity();glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0) ;} // end init
我自定义了三个函数Dispaly(), Load(), init(),分别用来显示图形,加载数据,初始化界面的。
Display函数里面主要实现渲染场景的操作;
Load函数是用来从外界读取数据以实现画图;
init函数里面主要实现背景颜色和坐标系统的操作。
另外,各个函数里面的函数调用都已经做了注释,应该很容易看明白,已经在VS2010中调试成功。
- OpenGL初识
- 初识OpenGL
- opengl初识
- 初识OpenGL
- 初识OpenGL
- [OpenGL] 初识OpenGL,计算机图形学
- 【OpenGL】初识OpenGL4.0
- 初识openGL ES2.0
- 【OpenGL】初识OpenGL4.0
- 【OpenGL】初识OpenGL4.0
- 【OpenGL】初识OpenGL4.0
- 实验1 OpenGL初识
- [OpenGL] 初识GLFW
- Opengl ES初识 (Opengl ES笔记)
- [OpenGL]环境搭建以及OpenGL初识
- 初识openGL---openGL学习笔记(一)
- OpenGL ES总结(一)OpenGL 初识
- Opengl ES 初识(整理)
- 优化sql语句提高oracle执行效率 .
- 使用Castor工具完成Java对象与XML之间的相互转换
- Android APK 签名比对
- JQuery $.ajax 如何捕获异常信息?
- Xcode - Could not launch app - No such file or directory Error.
- 初识OpenGL
- web.xml文件解读
- Hibernate Tomcat JNDI数据源配置(备忘)
- php 购物车的例子
- Java正则表达式工具类
- .NET添加引用后,但在代码中使用using时却找不到命名空间?
- MYSQL时间显示(与ORACLE的区别)
- Sql*plus介绍
- WIN8 APP 编程相关资源