opengl雾开启
#include <GL/glut.h>
#include <stdio.h>
#include <iostream>
using namespace std;
static GLint fogMode; static void init(void){
GLfloat position [] ={0.5,0.5,3.0,0.0};
glEnable(GL_DEPTH_TEST);
glLightfv(GL_LIGHT0,GL_POSITION,position);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
{
GLfloat mat [] ={0.1745,0.01175,0.01175};
glMaterialfv(GL_FRONT,GL_AMBIENT,mat);
mat[]=0.61424;mat[]=0.04136;mat[]=0.04136;
glMaterialfv(GL_FRONT,GL_DIFFUSE,mat);
mat[]=0.727811;mat[]=0.626959;mat[]=0.626959;
glMaterialfv(GL_FRONT,GL_SPECULAR,mat);
glMaterialf(GL_FRONT,GL_SHININESS,0.6*128.0);
} glEnable(GL_FOG);
{
GLfloat fogColor[]={0.0,0.8,0.0,1.0}; fogMode=GL_EXP;
glFogi(GL_FOG_MODE,fogMode);
glFogfv(GL_FOG_COLOR,fogColor);
glFogf(GL_FOG_DENSITY,0.35);
glHint(GL_FOG_HINT,GL_DONT_CARE);
glFogf(GL_FOG_START,1.0);
glFogf(GL_FOG_END,5.0);
} glClearColor(0.0,0.8,0.0,1.0);
} static void renderSphere(GLfloat x,GLfloat y,GLfloat z){
glPushMatrix();
glTranslatef(x,y,z);
glutSolidSphere(0.4,,);
glPopMatrix();
} void display(void){
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
renderSphere(-.,-0.5,-1.0);
renderSphere(-.,-0.5,-.);
renderSphere(.,-0.5,-.);
renderSphere(.,-0.5,-.);
renderSphere(.,-0.5,-.);
glFlush();
} void reshape(int w,int h){
glViewport(,,(GLfloat)w,(GLfloat)h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if(w<=h){
glOrtho(-2.5,2.5,-2.5*(GLfloat)h/(GLfloat)w,2.5*(GLfloat)h/(GLfloat)w,-10.0,10.0);
}else{
glOrtho(-2.5*(GLfloat)w/(GLfloat)h,2.5*(GLfloat)w/(GLfloat)h,-2.5,2.5,-10.0,10.0);
}
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
} void keyboard(unsigned char key,int x,int y){
switch(key){
case 'f':
case 'F':
if(fogMode == GL_EXP){
fogMode = GL_EXP2;
printf("current fog mode is : GL_EXP2");
cout<<"current fog mode is : GL_EXP2"<<endl;
}else if(fogMode ==GL_EXP2){
fogMode = GL_LINEAR;
printf("current fog mode is : GL_LINEAR");
cout<<"current fog mode is : GL_LINEAR"<<endl;
}else if(fogMode ==GL_LINEAR){
printf("current fog mode is : GL_EXP");
cout<<"current fog mode is : GL_EXP"<<endl;
fogMode = GL_EXP;
}
glFogi(GL_FOG_MODE,fogMode);
glutPostRedisplay();
break;
case :
exit();
break;
default:
break;
}
} int main(int argc,char **argv){
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB|GLUT_DEPTH|GLUT_MULTISAMPLE);
glutInitWindowSize(,);
glutCreateWindow(argv[]); init();
glutReshapeFunc(reshape);
glutKeyboardFunc(keyboard);
glutDisplayFunc(display);
glutMainLoop();
return ;
}
opengl雾开启的更多相关文章
- OpenGL法向量变换
OpenGL光照开启时,法向量用于决定特定顶点或面上接受到光照的多少.光照处理过程作用于观察坐标空间,因此,模型对象坐标系的法向量也需要使用GL_MODELVIEW矩阵变换到观察坐标系. 然而,法向量 ...
- 关于Unity中水和雾的使用
水 自己来做水和雾还是有点麻烦的,不过没关系,Unity帮我们做好了很多可以用的. 1.Unity自己实现了水的特效,帮助我们解决游戏中水的问题 2.Unity的水集成在了Environment的环境 ...
- C#应用视频教程2.2 OPENGL虚拟仿真介绍
三维在理解了如何绘制2D元素之后,我们尝试绘制3D元素. 其实多个三角形也能够成四面体,多个长方形也能够成六面体,所以绘制3D元素的时候,只要顶点数量匹配就行了 这里我们尤其注意,我把绘制之前的三 ...
- OpenGL学习脚印:背面剔除(Face Culling)
写在前面 在绘制封闭类型的几何对象时,开启背面剔除功能能够提高渲染性能.本节简要介绍下背面剔除,示例程序可以在我的github下载. 什么是背面剔除 当我们观察场景中对象时,一般只能以一定角度来观察, ...
- OpenGL超级宝典笔记——深度纹理和阴影 【转】
目录[-] 光源视角 新型的纹理 深度纹理的大小 首先绘制阴影 然后是光照 投影阴影贴图 阴影比较 之前我们介绍过简单的把物体压平到投影平面来制造阴影.但这种阴影方式有其局限性(如投影平面须是平面). ...
- 3D Computer Grapihcs Using OpenGL - 04 First Triangle
本节将绘制一个三角形 先看最终代码: MyGlWindow.cpp: #include <gl\glew.h> #include "MyGlWindow.h" void ...
- SharpGL学习笔记(十六) 多重纹理映射
多重纹理就把多张贴图隔和在一起.比如下面示例中,一个表现砖墙的纹理,配合一个表现聚光灯效果的灰度图,就形成了砖墙被一个聚光灯照亮的效果,这便是所谓的光照贴图技术. 多重纹理只在OpenGL扩展库中才提 ...
- SharpGL学习笔记(十九) 摄像机漫游
所谓的摄像机漫游,就是可以在场景中来回走动. 现实中,我们通过眼睛观察东西,身体移动带动眼睛移动观察身边的事物,这也是在漫游. 在OpenGL中我们使用函数LookAt()来操作摄像机在三维场景中进行 ...
- SharpGL学习笔记(十五) 纹理映射
纹理映射非常实用,在游戏场景中已经无所不在了. 一个较少的多边形构成的模形,配合好的纹理贴图进行映射,可以得到逼真的效果.游戏中的天空,地面,墙面,和植物都是纹理贴图进行映射的. 例如最终幻想8的男女 ...
随机推荐
- PHP获取远程图片并调整图像大小
<?php /** * *函数:调整图片尺寸或生成缩略图 *修改:2013-2-15 *返回:True/False *参数: * $Image 需要调整的图片(含路径) * $Dw= ...
- Android_Intent_data_type
layout.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" x ...
- 配置LINUX为路由
配置:关闭防火墙 linux1 地址1: 192.168.10.10/24 地址2:192.168.20.10/24(不指定网关,做为路由,自己就是网关) linux2 地址1: 192. ...
- Android 常见adb命令
1. 查看所有已链接的设备 命令: adb devices 例: C:\Users\laiyu>adb devices List of devices attached 5d3b5aac ...
- 你hack那么多啊,该怎么办
当我们通过javascript来操作css样式的时候,假如我们停留在css2的阶段,会发现操作起来并不是很困难.虽然存在一些浏览器兼容的问题,但我们通过封装自己的函数,不仅可以设置样式还能够获取样式. ...
- postgresql crosstab 行转列函数
http://blog.csdn.net/hexin373/article/details/19242833
- Linux下如何查看哪些端口处于监听状态
查看某一端口的占用情况: lsof -i:端口号 前提:首先你必须知道,端口不是独立存在的,它是依附于进程的.某个进程开启,那么它对应的端口就开启了,进程关闭,则该端口也就关闭了.下次若某个进程再次开 ...
- 转-----EasyCHM制作教程
希望以后自己的笔记能够整理成 chm 格式的文档 制作过CHM帮助文件的同志们可能都遇到过以下两个问题: 1.制作好的CHM文件图像.公式不显示. 2.制作好的CHM文件在自己电脑上能显示,在别人电脑 ...
- java基础之Java变量命名规范
本文介绍的是java中的变量的命名规则,对于初学者来说,还是很重要的.希望对你有帮助,一起来看. Java是一种区分字母的大小写(case-sensitive)的语言,下面谈谈Java语言中包.类.变 ...
- C# TcpClient 连接状态检测
C# TcpClient在连接成功后无法检测连接状态,即使对方关闭了网络连接.以下扩展可检测连接状态: public static class TcpClientEx { public static ...