回 帖 发 新 帖 刷新版面

主题:[原创]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个回复)

51 楼

楼主,牛,感谢你的好文,我将转载到我的博客上。www.ategpu.com

52 楼

对你的敬仰如滔滔江水,楼主能否在讲述一下光照,怎么做阴影等。

53 楼

深入浅出的好教程,和NeHe的相互辉映

54 楼

一定顶你,呵呵

55 楼


OpenGL怎么都是函数啊 没有面向对象的东西吗

56 楼


这么久了,不知道楼主还有没有在注意这个贴子,不过也试一下
 我直接载了附件,glee.h这些东西也都加上了,可是调试的时候会出现错误
long long这种类型在VC6.0里不被识别的错误   然后我把long long改成__int64
错误变成
flag.obj : error LNK2001: unresolved external symbol _pglWindowPos2iARB
Debug/flag.exe : fatal error LNK1120: 1 unresolved externals
这个搞了半天,百度完了又google都没什么头绪   希望楼主看到,帮个忙,帮着看看是什么问题

57 楼

[quote]这么久了,不知道楼主还有没有在注意这个贴子,不过也试一下
 我直接载了附件,glee.h这些东西也都加上了,可是调试的时候会出现错误
long long这种类型在VC6.0里不被识别的错误   然后我把long long改成__int64
错误变成
flag.obj : error LNK2001: unresolved external symbol _pglWindowPos2iARB
Debug/flag.exe : fatal error LNK1120: 1 unresolved externals
这个搞了半天,百度完了又google都没什么头绪   希望楼主看到,帮个忙,帮着看看是什么问题[/quote]

目前我手里只有一个Visual C++ 2008 Express,下载编译,可以运行。而VC6.0没有安装,所以也没试了。
我搜索了一下,代码里面并没有用到long long类型,不知道您修改了哪里。
error LNK2001这个错误,估计是您没有把GLee.c放到工程中一起编译。最简单的办法就是让flag.c和GLee.c处在同一个工程,然后Build这个工程。

58 楼

这一课的问题解决了,  昨天搞不好
今天莫名奇妙的就OK了  什么事也没做

59 楼


请问一下,比如我弄了一个太阳系模拟,(用了纹理,光照),我想到屏幕右下方签个名(显示中文字)这怎么实现?
好像文字的色彩会被光照给抹掉

60 楼

[quote]请问一下,比如我弄了一个太阳系模拟,(用了纹理,光照),我想到屏幕右下方签个名(显示中文字)这怎么实现?
好像文字的色彩会被光照给抹掉[/quote]

在显示文字时,把光照关闭即可。像这样:
[code]glEnable(GL_LIGHTING);
// 显示太阳系
glDisable(GL_LIGHTING);
// 显示签名[/code]

我来回复

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