zoukankan      html  css  js  c++  java
  • 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入门学习

  • 相关阅读:
    斐波那契数列变形
    poj 1061 青蛙的约会+拓展欧几里得+题解
    Leading and Trailing LightOJ
    HDU-1576 A/B 基础数论+解题报告
    swal() 弹出层的用法
    jqurey.running.min.js运动的字体效果
    echarts中dataZoom的使用
    echarts动态添加数据
    设备适配尺寸
    sublime Text3 插件
  • 原文地址:https://www.cnblogs.com/zhuchengyang/p/7446640.html
Copyright © 2011-2022 走看看