博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenGL编程指南 雾坐标
阅读量:5895 次
发布时间:2019-06-19

本文共 3061 字,大约阅读时间需要 10 分钟。

今天学习opengl红包书中雾坐标的相关部分,用书中所给代码编译总是出现链接错误。开始上网查找,有人说要加入ws_232.lib,但是我加完之后还是不行。最后看见一个解决方法。

最后程序代码如下:

#include 
#include
#include
#include
#include
#define GL_FOG_COORDINATE_SOURCE_EXT 0x8450 #define GL_FOG_COORDINATE_EXT 0x8451 static GLfloat f1, f2, f3; PFNGLFOGCOORDFEXTPROC glFogCoordfEXT = NULL; static void init(void) {
glFogCoordfEXT = (PFNGLFOGCOORDFEXTPROC) wglGetProcAddress("glFogCoordfEXT"); GLfloat fogColor[4] = {
0.0, 0.25, 0.25, 1.0}; f1 = 1.0f; f2 = 5.0f; f3 = 10.0f; glEnable(GL_FOG); glFogi(GL_FOG_MODE, GL_EXP); glFogfv(GL_FOG_COLOR, fogColor); glFogf(GL_FOG_DENSITY, 0.25); glHint(GL_FOG_HINT, GL_DONT_CARE); glFogi(GL_FOG_COORD_SRC, GL_FOG_COORD); glClearColor(0.0, 0.25, 0.25, 1.0); } void display(void) {
glClear(GL_COLOR_BUFFER_BIT); glColor3f (1.0f, 0.75f, 0.0f); glBegin (GL_TRIANGLES); glFogCoordfEXT(f1); glVertex3f (2.0f, -2.0f, 0.0f); glFogCoordfEXT(f2); glVertex3f (-2.0f, 0.0f, -5.0f); glFogCoordfEXT(f3); glVertex3f (0.0f, 2.0f, -10.0f); glEnd(); glutSwapBuffers(); } void reshape(int w, int h) {
glViewport(0, 0, (GLsizei) w, (GLsizei) h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective (45.0, 1.0, 0.25, 25.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity (); glTranslatef (0.0, 0.0, -5.0); } void keyboard(unsigned char key, int x, int y) {
switch (key) {
case 'c': glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FRAGMENT_DEPTH_EXT); glutPostRedisplay(); break; case 'C': glFogi(GL_FOG_COORDINATE_SOURCE_EXT, GL_FOG_COORDINATE_EXT); glutPostRedisplay(); break; case '1': f1 = f1 + 0.25; glutPostRedisplay(); break; case '2': f2 = f2 + 0.25; glutPostRedisplay(); break; case '3': f3 = f3 + 0.25; glutPostRedisplay(); break; case '8': if (f1 > 0.25) {
f1 = f1 - 0.25; glutPostRedisplay(); } break; case '9': if (f2 > 0.25) {
f2 = f2 - 0.25; glutPostRedisplay(); } break; case '0': if (f3 > 0.25) {
f3 = f3 - 0.25; glutPostRedisplay(); } break; case 'b': glMatrixMode (GL_MODELVIEW); glTranslatef (0.0, 0.0, -0.25); glutPostRedisplay(); break; case 'f': glMatrixMode (GL_MODELVIEW); glTranslatef (0.0, 0.0, 0.25); glutPostRedisplay(); break; case 27: exit(0); break; default: break; } }
int main(int argc, char** argv) {
glutInit(&argc, argv); glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGBA); glutInitWindowSize(500, 500); glutCreateWindow(argv[0]); init(); glutReshapeFunc (reshape); glutKeyboardFunc (keyboard); glutDisplayFunc (display); glutMainLoop(); return 0; }

注意黄色背景的部分,是新添加的内容。当然,这里用到了opengl扩展,关于glext.h的相关文件导入我就不多说了。另外,还有一个点参数的程序,下一篇介绍。运行结果如下:

1.GL_FRAGMENT_DEPTH_EXT

2.GL_FOG_COORDINATE_EXT

转载地址:http://lwisx.baihongyu.com/

你可能感兴趣的文章
pixel2坑
查看>>
wpf 自动完成comboxBox
查看>>
传值引用和调用引用的区别
查看>>
Linux & Oracle目录说明
查看>>
Hive简介
查看>>
Linux网络编程的一般步骤(1)
查看>>
hyper-v 无线网连接
查看>>
react中create-react-app配置antd按需加载(方法二)
查看>>
Python3.7.1学习(六)RabbitMQ在Windows环境下的安装
查看>>
Windows下memcached的安装配置
查看>>
ubuntu: firefox+flashplay
查看>>
常见的海量数据处理方法
查看>>
Microsoft Windows 8.1 使用记录
查看>>
C语言博客作业03--函数
查看>>
web.xml 中CharacterEncodingFilter类的学习
查看>>
显示刚刚添加的最后一条数据,access,选择语句,select
查看>>
贪吃蛇逻辑代码
查看>>
实现c协程
查看>>
ASP.NET视频教程 手把手教你做企业论坛网站 视频教程
查看>>
[LeetCode] Meeting Rooms II
查看>>