主题:[原创]OpenGL入门学习——第十六课
eastcowboy
[专家分:25370] 发布于 2008-05-05 14:24:00
现在即将放出的是第十六课的内容。
首先还是以前课程的连接:
[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],因此这里并没有放到附件中。在编译的时候应该将这两个文件和其它代码文件一起编译。
=====================未完,请勿跟帖=====================
最后更新于:2008-06-10 15:57:00
回复列表 (共106个回复)
41 楼
wayne5ning [专家分:0] 发布于 2009-03-20 16:58:00
太赞了,lx辛苦了
入门学习中,感谢~~[em2]
42 楼
小小C [专家分:4570] 发布于 2009-03-21 13:09:00
顶一个,顶顶
43 楼
kingkin1989 [专家分:0] 发布于 2009-05-08 15:51:00
学习了,不过我想请问一下我用隐藏面消隐总是出错是为什么,在网上似乎找不到跟我一样出错的例子。。。。
比如以下程序:
#define WindowWidth 800
#define WindowHeight 800
#define WindowTitle "test"
#include <gl/glut.h>
#include <stdio.h>
#include <malloc.h>
void display(void)
{
glClearColor(1.0,1.0,1.0,1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(130,1,0,2500);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(50,50,50,50,100,50,0,0,1);
glColor3f(0.0,1.0,0.0);
glBegin(GL_QUADS);
glVertex3f(0,100,0);
glVertex3f(100,100,0);
glVertex3f(100,100,75);
glVertex3f(0,100,75);
glEnd();
glColor3f(0.0,0.0,1.0);
glBegin(GL_QUADS);
glVertex3f(0,150,50);
glVertex3f(100,150,50);
glVertex3f(100,150,150);
glVertex3f(0,150,150);
glEnd();
glColor3f(1.0,0.0,0.0);
glBegin(GL_QUADS);
glVertex3f(0,0,0);
glVertex3f(100,0,0);
glVertex3f(100,150,0);
glVertex3f(0,150,0);
glEnd();
glutSwapBuffers();
}
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
glutInitWindowPosition(100, 100);
glutInitWindowSize(WindowWidth, WindowHeight);
glutCreateWindow(WindowTitle);
glutDisplayFunc(&display);
// glEnable(GL_DEPTH_TEST);
glutMainLoop();
return 0;
}
只要开启glEnable(GL_DEPTH_TEST);这句,就直接导致什么都没了,辛苦您了。。。
44 楼
boxertony [专家分:23030] 发布于 2009-05-08 19:32:00
赞一个
45 楼
eastcowboy [专家分:25370] 发布于 2009-05-09 03:41:00
to kingkin1989(43楼):
这应该是gluPerspective使用不当而造成的问题。注意这个函数的后两个参数都应该是正数。
我将gluPerspective(130,1,0,2500);修改为gluPerspective(130,1,1,2500);之后,可以看到绘制出彩色的图形。
在不影响显示效果的前提下,应该尽可能的把gluPerspective的第三个参数设置为较大,而把第四个参数设置为较小。这样可以有效的利用深度缓冲的精度。
46 楼
heavenzjq [专家分:0] 发布于 2009-06-12 14:08:00
受教了。。楼主辛苦了
47 楼
husthk986 [专家分:10] 发布于 2009-06-18 10:41:00
支持楼主,感谢你的辛勤工作,学习了。
48 楼
yingkoz [专家分:0] 发布于 2009-07-28 12:40:00
看完了,谢谢楼主了!
49 楼
GuCool [专家分:0] 发布于 2009-07-30 10:26:00
楼主写得通俗易懂。非常好。顶了。。。
50 楼
gzlgz [专家分:0] 发布于 2009-08-04 18:16:00
请问,如果要用Open GL实现等值线的绘制,该如何实现???
我来回复