回 帖 发 新 帖 刷新版面

主题:[原创]OpenGL入门学习——第十六课

现在即将放出的是第十六课的内容。

首先还是以前课程的连接:
[url=http://www.programfan.com/club/showbbs.asp?id=184355]第一课,编写第一个OpenGL程序[/url]
[url=http://www.programfan.com/club/showbbs.asp?id=184525]第二课,绘制几何图形[/url]
[url=http://www.programfan.com/club/showbbs.asp?id=184769]第三课,绘制几何图形的一些细节问题[/url]
[url=http://www.programfan.com/club/showbbs.asp?id=185032]第四课,颜色的选择[/url]
[url=http://www.programfan.com/club/showbbs.asp?id=196017]第五课,三维的空间变换[/url]
[url=http://www.programfan.com/club/showbbs.asp?id=196231]第六课,动画的制作[/url]
[url=http://www.programfan.com/club/showbbs.asp?id=218828]第七课,使用光照来表现立体感[/url]
[url=http://www.programfan.com/club/showbbs.asp?id=219518]第八课,使用显示列表[/url]
[url=http://www.programfan.com/club/showbbs.asp?id=224877]第九课,使用混合来实现半透明效果[/url]
[url=http://www.programfan.com/club/post-227694.html]第十课,BMP文件与像素操作[/url]
[url=http://www.programfan.com/club/post-244703.html]第十一课,纹理的使用入门[/url]
[url=http://bbs.pfan.cn/post-252901.html]第十二课,OpenGL片断测试[/url]
[url=http://bbs.pfan.cn/post-275218.html]第十三课,OpenGL是一个状态机[/url]
[url=http://bbs.pfan.cn/post-275219.html]第十四课,OpenGL版本和OpenGL扩展[/url]
[url=http://bbs.pfan.cn/post-275223.html]第十五课,从“绘制一个立方体”来看OpenGL的进化过程[/url]
第十六课,在Windows系统中显示文字  ——→  [color=0000FF]本次课程的内容[/color]

内容超多的一课!不过我想精彩的程度也一定不会让大家失望。大家不妨先浏览一下课程里的图片:)。

[color=FF0000]2008-06-10 修改了附件[/color]
增加了两个文件,showline.c, showtext.c。分别为第二个和第三个示例程序的main函数相关部分。
在ctbuf.h和textarea.h最开头部分增加了一句#include <stdlib.h>
附件中一共有三个示例程序:
第一个,飘动的“曹”字旗。代码为:flag.c, GLee.c, GLee.h
第二个,带缓冲的显示文字。代码为:showline.c, ctbuf.c, ctbuf.h, GLee.c, GLee.h
第三个,显示歌词。代码为:showtext.c, ctbuf.c, ctbuf.h, textarea.c, textarea.h, GLee.c, GLee.h
其中,GLee.h和GLee.c可以[url=http://www.opengl.org/sdk/libs/GLee/GLee5_21.zip]从网上下载[/url],因此这里并没有放到附件中。在编译的时候应该将这两个文件和其它代码文件一起编译。

=====================未完,请勿跟帖=====================

回复列表 (共106个回复)

21 楼

附件里的ctbuf.c函数怎么调都有问题啊,楼主给一下完整的程序啊

22 楼

答复楼上这位老兄。附件已修改。
首先,GLee.h和GLee.c可以[url=http://www.opengl.org/sdk/libs/GLee/GLee5_21.zip]从网上下载[/url],因此这里并没有放到附件中。在编译的时候应该将这两个文件和其它代码文件一起编译。

附件中一共有三个示例程序:
第一个,飘动的“曹”字旗。代码为:flag.c, GLee.c, GLee.h
第二个,带缓冲的显示文字。代码为:showline.c, ctbuf.c, ctbuf.h, GLee.c, GLee.h
第三个,显示歌词。代码为:showtext.c, ctbuf.c, ctbuf.h, textarea.c, textarea.h, GLee.c, GLee.h

对附件的修改为:
增加了两个文件,showline.c, showtext.c。分别为第二个和第三个示例程序的main函数相关部分。
在ctbuf.h和textarea.h最开头部分增加了一句#include <stdlib.h>

23 楼

顶!

24 楼

顶啊~~~~,这贴不顶什么贴顶呢?

25 楼

第二个程序
出现错误error C2632: 'long' followed by 'long' is illegal
M VC++6.0编译,GLee.h就是在那网址下下来的....

出现错误的地方://///GLee.h
#ifndef GL_EXT_timer_query
    typedef signed long long GLint64EXT;
    typedef unsigned long long GLuint64EXT;
#endif

我尝试去掉一个long,显示的时候中文部分是乱麻

26 楼

老师,我在运行你提供的某些代码时会报错。不知道问题出在那里。
错误提示为“没有找到MSVCR80D.dll,或许重装软件会解决该问题”。

27 楼

[quote]'long' followed by 'long' is illegal[/quote]
VC6.0中不支持long long类型,因此编译会出错。
可以用_int64代替long long。
也可以考虑换更新版本的VC。

[quote]没有找到MSVCR80D.dll,或许重装软件会解决该问题[/quote]
这是因为你的系统中没有安装.NET框架的debug版本。具体的说,如果你没有安装VC2005,则会遇到这个问题。
你可以安装VC2005,也可以将重新编译代码以便解决此问题。

28 楼

有些地方还是看不太懂,感觉还是有点跳跃太大

29 楼

好难学呃,不知道多长时间才能学的象个样子

30 楼

的确,这一课的跳跃确实很大,这是我的过失。不过我确实不知道应该如何讲。
在三维图形这个领域,我并不是太熟悉。最前面的所谓“入门教程”,其实只能算是我自己的一份学习笔记而已。现在回顾以前写的内容,也会发现一些错误。可惜我也没有去修改它,可以算是误人子弟了。
在我的印象中,会把我写的东西全部看完的人并不太多。我不知道我的读者有怎样的水平,习惯如何,掌握了哪些知识,因此我只能自己猜测。
从第一课开始,我使用了C语言作为示例程序的语言,这是因为在大学生中学过C语言的人比较多,而Pascal, C++则相对少一些,其它语言则可能更少一些。到现在我虽然有时会感觉C++可能会更加合适一点,但也一直使用C语言。这其中一个小的原因是与网络上所谓“TurboC画图教程”做个竞争,还有一点就是希望更多的人能够读懂示例代码。
不过有一点我可能想得不对,毕竟不是所有“学过C语言”的人都能够轻松的读懂这些示例代码的。比如我刚写完第一课,就有好几位朋友在问“int main(int argc, char* argv[])”这句代码是什么意思。
我在写教程的时候,更多的会考虑讲解如何使用OpenGL,而不是如何写C语言的代码,或者如何证明某个数学公式。每位读者的知识面、技术水平等等都是不同的,我想我无法照顾到所有人。如果你感到某个问题无法理解,不要抓住问题不放手——有可能我的观点本来就是错误的,所以你无法理解也并不奇怪。你可以将问题跟帖提出,我在看到后会尽量回复。如果多数读者都觉得太难的话,那我就得准备写些更简单的内容了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册