OpenGL学习笔记2017/8/29

OpenGL学习日志:

感谢doing5552 的OpenGL入门学习:http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html

相信有部分人还在使用pascal学习OpenGL(像我一样)说不定也有人经常会遇到莫名其妙的编译错误(即使只是一个模板)

经过十个多小时的研究,我终于找到了OpenGL的使用方法

首先,在百度上(也可以是别的搜索引擎)上找到叫做glutdlls37beta的压缩包,下载解压后全部放入bin->i386-win32下

接下来给出OpenGL框架:

 1 uses gl,glu,glut;
 2 procedure display;cdecl;
 3 begin
 4   glclear(GL_COLOR_BUFFER_BIT);
 5   //这里写绘图语句
 6   glflush();
 7 end;
 8 begin
 9   glutinit(@argc,argv);
10   glutinitdisplaymode(glut_rgb or glut_single);   //rgb颜色和单色位图
11   glutinitwindowposition(100,100);
12   glutinitwindowsize(400,400);    //窗口大小
13   glutcreatewindow(‘zcy‘);
14   glutdisplayfunc(@display);      //调用(最好不要带参数,如需要最好使用全局变量)
15   glutmainloop;
16 end.

相信OpenGL最简单的一个例子就是画一个立体的茶壶了吧?

 1 uses gl,glu,glut;
 2 var t:real;
 3 procedure display;cdecl;
 4 begin
 5   glclear(gl_color_buffer_bit);  //设置清屏颜色
 6   glmatrixmode(gl_modelview);
 7   glloadidentity;
 8   glrotatef(t,1,1,1);      //旋转角度
 9   glcolor3f(255,0,0);      //茶壶颜色
10   glutwireteapot(0.5);    //画茶壶并设置茶壶大小
11   glflush;
12 end;
13 procedure keyboard(key:byte;x,y:longint);cdecl;
14 begin
15   t:=t+1;             //按一下就计数
16   display;            //重绘
17 end;
18 begin
19   glutinit(@argc,argv);
20   glutinitdisplaymode(glut_rgb or glut_single);
21   glutinitwindowposition(100,100);
22   glutinitwindowsize(400,400);
23   glutcreatewindow(‘zcy‘);
24   glutdisplayfunc(@display);
25   glutkeyboardfunc(@keyboard);
26   glutmainloop;
27 end.

当然不只可以画茶壶,还可以画其他的几何体

详细请参考https://wenku.baidu.com/view/199d5b1a59eef8c75ebfb300.html的23页至25页

颜色的rgb数值也请参考以上网站的第12页(注意乘上255)

接下来给出http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html的第一个例子的pascal代码:

 1 uses gl,glu,glut;
 2 procedure mydisplay;cdecl;    //注意!要写cdecl!!!(虽然我也不知道为什么,反正要写上)
 3 begin
 4   glclear(gl_color_buffer_bit);
 5   glrectf(-0.5,-0.5,0.5,0.5);
 6   glflush;
 7 end;
 8 begin
 9   glutinit(@argc,argv);
10   glutinitdisplaymode(glut_rgb or glut_single);
11   glutinitwindowposition(100,100);
12   glutinitwindowsize(400,400);
13   glutcreatewindow(‘zcy‘);
14   glutdisplayfunc(@mydisplay);
15   glutmainloop;
16 end.

这一篇就写到这里,有兴趣的可以自己研究http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html,最后再次感谢doing5552的OpenGL入门学习

时间: 2024-10-25 19:25:06

OpenGL学习笔记2017/8/29的相关文章

【OpenGL 学习笔记02】宽点画线

我们要知道,有三种绘图操作是最基本的:清除窗口,绘制几何图形,绘制光栅化对象. 光栅化对象后面再解释. 1.清除窗口 比如我们可以同时清除颜色缓冲区和深度缓冲区 glClearColor (0.0, 0.0, 0.0, 0.0);//指定颜色缓冲区清除为黑色 glClearDepth(1.0);//指定深度缓冲区的清除值为1.0 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);//指定要清除的缓冲区并清除 2.绘制几何图形 先要设置绘制颜色,

【opengl 学习笔记01】HelloWorld示例

<<OpenGL Programming Guide>>这本书是看了忘,忘了又看,赶脚还是把笔记做一做心里比较踏实,哈哈. 我的主题是,好记性不如烂笔头. ================================================================ 1. 下载glut库 glut库地址为:www.opengl.org/resources/libraries/glut/glutdlls37beta.zip glut全称为:OpenGL Utilit

OpenGL学习笔记:拾取与选择

转自:OpenGL学习笔记:拾取与选择 在开发OpenGL程序时,一个重要的问题就是互动,假设一个场景里面有很多元素,当用鼠标点击不同元素时,期待作出不同的反应,那么在OpenGL里面,是怎么知道我当前鼠标的位置是哪一个物体呢? OpenGL有一套机制,叫做Picking, 里面涉及到几个核心概念: 1. selection mode. 选择模式 2. name stack. 名字栈 3. hit record. 命中记录 4. viewing volume. 视角范围 在OpenGL的pick

OpenGL学习笔记3 —— 绘制3D物体、鼠标交互、反向变换

/* reference http://nehe.gamedev.net/article/using_gluunproject/16013/ */ #include <windows.h> // windows系统要加这个.因为下面2个头文件的一些宏是在这个文件中定义的 #include <gl/Gl.h> #include <gl/glut.h> //这两个头文件在OpenGL程序中几乎必加. #include <cstdio> //标准输入输出,用来打印

Swift 2.0学习笔记(Day 29)——访问级别

Swift 2.0学习笔记(Day 29)——访问级别 原创文章,欢迎转载.转载请注明:关东升的博客 访问级别: Swift提供了3种不同访问级别,对应的访问修饰符为:public.internal和private.这些访问修饰符可以修饰类.结构体.枚举等面向对象的类型,还可以修饰变量.常量.下标.元组.函数.属性等内容. l public.可以访问自己模块中的任何public实体.如果使用import语句引入其他模块,我们可以访问其他模块中的public实体. l internal.只能访问自

【OpenGL 学习笔记04】顶点数组

通过之前的学习,我们知道,如果要绘制一个几何图形,那就要不断的调用绘制函数,比如绘制一个20条边的多边形,起码要调用22条函数(包含glBegin和glEnd). 所以OpenGL提供了一系列的顶点数组函数减少函数调用的次数来提高性能.而且使用顶点还可以避免顶点共享的冗余处理. 1.简单示例 先来回顾一下之前我们是怎么画直线的: void drawOneLine(GLfloat x1,GLfloat y1,GLfloat x2,GLfloat y2) { glBegin(GL_LINES); g

【OpenGL 学习笔记03】点画多边形

1.点画多边形 //定义填充多边形的点画模式.mask为32 x 32 的位图指针,1画0不画,使用前必须启用多边形点画功能 void glPloygonStipple(const GLubyte* mask); //绘制一个矩形 void glRectf(GLfloat x1,GLfloat y1,GLfloat x2,GLfloat y2); 2.示例 #include <GL/glut.h> #include <stdlib.h> void display(void) { G

OpenGL学习笔记1 —— 画点

#include <windows.h> // windows系统要加这个.因为下面2个头文件的一些宏是在这个文件中定义的 #include <gl/Gl.h> #include <gl/glut.h> //这两个头文件在OpenGL程序中几乎必加. //<<<<<<<<<<<<<<<<<<<<<<< myInit >>&

OpenGL学习笔记2 —— 画立方体

#include <windows.h> // windows系统要加这个.因为下面2个头文件的一些宏是在这个文件中定义的 #include <gl/Gl.h> #include <gl/glut.h> //这两个头文件在OpenGL程序中几乎必加. //<<<<<<<<<<<<<<<<<<<<<<< myInit >>&