- 浏览: 162918 次
- 性别:
- 来自: 广州
最新评论
-
雷蕾_ing:
...
python 模拟POST -
blink31:
TextOut不能换行,请问有其他的解决办法吗?
C++下的OpenGL文字显示的完美解决方案 -
lwz7512:
这么强悍!
在优酷的几道笔试题 -
lwz7512:
下了,谢谢分享!
opengl3D台球源代码 -
xltank:
今天过期了。。。
flash builder 序列号
#include "stdafx.h"
#include <math.h>
#include <gl/glut.h>
#include <gl/gl.h>
bool mouseisdown=false ;
bool loopr=false ;
int mx,my;
int ry=30;
int rx=30;
void timer(int p)
{
ry-=5;
glutPostRedisplay();
if (loopr)
glutTimerFunc(200,timer,0);
}
void mouse(int button, int state, int x, int y)
{
if (button == GLUT_LEFT_BUTTON)
{
if (state == GLUT_DOWN)
{ mouseisdown=true ; loopr=false ;}
else
mouseisdown=false ;
}
if (button== GLUT_RIGHT_BUTTON)
if (state == GLUT_DOWN)
{loopr=true ; glutTimerFunc(200,timer,0);}
}
void motion(int x, int y)
{
if (mouseisdown==true )
{
ry+=x-mx;
rx+=y-my;
mx=x;
my=y;
glutPostRedisplay();
}
}
void special(int key, int x, int y)
{
switch (key)
{
case GLUT_KEY_LEFT:
ry-=5;
glutPostRedisplay();
break ;
case GLUT_KEY_RIGHT:
ry+=5;
glutPostRedisplay();
break ;
case GLUT_KEY_UP:
rx+=5;
glutPostRedisplay();
break ;
case GLUT_KEY_DOWN:
rx-=5;
glutPostRedisplay();
break ;
}
}
void init()
//设置OpenGL的一些状态变量的初始值
{
glEnable(GL_DEPTH_TEST); //深度测试
glDepthFunc(GL_LESS); //设置深度测试函数
glPolygonMode(GL_FRONT_AND_BACK,GL_FILL); //设置多边形显示模式为正反面都是填充显示
glClearColor(1,1,1,1); //设置刷新背景色
glClearDepth(1); //设置清除深度缓冲区所用的值
}
void display()
{
float red[3]={1,0,0};
float blue[3]={0,1,0};
float green[3]={0,0,1};
float yellow[3]={1,1,0};
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glRotatef(ry,0,1,0);
glRotatef(rx,1,0,0);
glBegin(GL_QUADS);
glColor3fv(green);
glVertex3f(0.5,0.5,0);
glVertex3f(-0.5,0.5,0);
glVertex3f(-0.5,-0.5,0);
glVertex3f(0.5,-0.5,0);
glEnd();
glBegin(GL_QUADS);
glColor3fv(red);
glVertex3f(0.5,0.5,0.3);
glVertex3f(-0.5,0.5,-0.3);
glVertex3f(-0.5,-0.5,-0.3);
glVertex3f(0.5,-0.5,0.3);
glEnd();
glBegin(GL_QUADS);
glColor3fv(yellow);
glVertex3f(0.5,0.5,-0.3);
glVertex3f(-0.5,0.5,0.3);
glVertex3f(-0.5,-0.5,0.3);
glVertex3f(0.5,-0.5,-0.3);
glEnd();
glFlush();
glutSwapBuffers();
}
int main(int argc, char ** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_DOUBLE| GLUT_RGBA|GLUT_DEPTH); //设置显示模式:单缓冲区, RGBA颜色模式
glutInitWindowSize (400, 400); //设置窗口宽度、高度
glutInitWindowPosition(100,100); //设置窗口位置
glutCreateWindow ("double"); //弹出窗口
init();
glutDisplayFunc (display); //设置窗口刷新的回调函数
glutMouseFunc(mouse); //设置鼠标器按键回调函数
glutMotionFunc(motion);
glutSpecialFunc(special);
glutMainLoop(); //开始主循环
return 0;
}发表评论
-
GUI设计禁忌
2010-01-07 12:02 990本文列举Jeff Johnson:《GUI设计禁忌》一书中 ... -
LOD地形设计(三)
2010-01-05 05:03 1021LOD地形根据视点的变化决定是否进行网格分割,因此系统应设计一 ... -
LOD地形设计(二)
2010-01-05 05:02 1212自从LOD地形第一节推出以来,受到不少朋友的关注,本人真是受宠 ... -
LOD地形设计(一)
2010-01-05 05:01 1118在大规模的三维场 ... -
Windows SDK笔记
2009-04-16 16:45 1407应程序需求需要重写窗体内子控件某一特定消息,可怜我苦苦找了 ... -
关于的glut 的配置
2009-02-09 17:46 1700OpenGL 是一套 用于三维作图的API。与Direct3 ... -
C语言读取bmp位图文件(含bmp格式定义)
2009-02-09 17:45 3903loadbmp.h #ifndef _LOADBMP_H_ ... -
openGL贴图(借助glx),并测试性能(FPS)2
2009-02-09 17:45 1193client.c #include <sys/type ... -
alpha混合技术
2009-02-09 17:44 1500alpha混合技术 alpha混合技术对熟悉游戏的人来说不会 ... -
C语言将raw data(rgb/rgba)写成bmp文件(bmp24或32)
2009-02-09 17:44 3732int bmp_write(unsigned char *im ... -
OpenGL坐标变换专题
2009-02-09 17:43 2530OpenGL通过相机模拟、可 ... -
对话框中OpenGL的设置
2009-02-09 17:43 2204from:http://huhuiowen.blog.16 ... -
OpenGL曲线绘制:线段
2009-02-09 17:42 1894以线段方式绘制曲线。例如:正弦曲线。 glBegin(GL_ ... -
用VC++做OpenGL程序框架时出现非法错误
2009-02-09 17:40 10141.OpenGL.cpp 文件包含的头文件有没有{}不配对的情 ... -
opengl编写游戏的可移植性 具体表现
2009-02-09 17:39 1088OpenGL是个与硬件无关的软件接口,可以在不同的平台如Win ... -
什么是显卡的OpenGL模式
2009-02-09 17:39 1669OpenGL是近几年发展起来的一个性能卓越的三维图形标准。 ... -
关于-opengl在魔兽中的应用
2009-02-09 17:38 2007OpenGL在画质上是优于Direct的,这个“画质”不是指感 ... -
如何让显卡支持OpenGL模式????????
2009-02-09 17:38 3335OPENGL 不支持问题 这也 ... -
opengl3D台球源代码
2009-01-20 09:59 24383D台球,可以平面也可以从不同角度击球,使用OPENGL渲染, ... -
Jeff Molofee(NeHe)的OpenGL教程 - 碰撞检测与模型运动
2009-01-20 09:30 1650原 文 : Lesson 31: Collis ...
相关推荐
综上所述,OpenGL中的消隐算法是构建真实感3D场景的关键技术,它结合深度缓冲和视图变换等概念,使我们可以自由地操纵3D对象并呈现清晰、无重叠的图像。通过不断学习和实践,开发者可以掌握这些技能,创造出令人惊叹...
总结来说,OpenGL线框消隐涉及了OpenGL的渲染模式、深度缓冲技术和可能的手动扫描线算法实现。同时,利用显示列表可以提升复杂图形的绘制效率。在实际项目中,这些技术的合理运用能帮助开发者创建出高效、清晰且具有...
在OpenGL观察实验的基础上,通过实现实验内容,掌握OpenGL中消隐和光照的设置,并验证课程中消隐和光照的内容。 模型尺寸不做具体要求。要求修改代码达到以下要求: 1. 通过设置材料使得桌面和四条腿的颜色各不相同...
opengl的立方体消隐算法 可以实现选择 放大缩小
2. 配置双缓冲:在创建OpenGL上下文时,可以使用`PIXELFORMATDESCRIPTOR`结构来指定需要双缓冲。在`PFD_DOUBLEBUFFER`标志位设置为真,表示需要双缓冲。 3. 设置窗口大小:使用`glViewport`函数来设置视口大小,这...
比较完整的实例,实现简单模型的建模,参数修改,位置的变换,物体的拖拽,及空间环境的文件保存及打开。
在OpenGL观察实验的基础上,通过实现实验内容,掌握OpenGL中消隐和光照的设置,并验证课程中消隐和光照的内容。 模型尺寸不做具体要求。要求修改代码达到以下要求: 1.通过设置材料使得桌面和四条腿的颜色各不相同,...
OpenGL提供了几种不同的消隐算法,如Z-Buffer(深度缓冲)和扫描线算法,它们能够在渲染过程中自动处理这个问题,从而提供更真实的视觉效果。 项目中提到的“光照颜色变化”涉及到OpenGL的光照模型。OpenGL允许我们...
qt+opengl实现帧缓冲qt+opengl实现帧缓冲qt+opengl实现帧缓冲qt+opengl实现帧缓冲qt+opengl实现帧缓冲qt+opengl实现帧缓冲qt+opengl实现帧缓冲qt+opengl实现帧缓冲qt+opengl实现帧缓冲qt+opengl实现帧缓冲qt+opengl...
总的来说,利用OpenGL进行CAD三维图形的消隐处理,是通过深度缓冲区和深度测试实现的,这使得在屏幕上能够正确地呈现出具有深度感的三维模型,提升视觉效果。理解并掌握这些技术对于开发高质量的CAD应用程序至关重要...
标题中的“mfc+双缓冲+opengl框架”揭示了我们即将探讨的是一个结合了Microsoft Foundation Classes (MFC),双缓冲技术以及OpenGL图形库的应用程序框架。MFC是微软为Windows平台开发桌面应用程序提供的一套类库,它...
2. 消隐算法:线性扫描消隐(Z-Buffering)和画家算法。 3. OpenGL:设置上下文,定义顶点,应用变换,管理深度测试。 4. 数据结构与编程技巧:用C语言表示3D坐标和颜色,处理图形数据。 5. 编程环境:使用GLUT、SDL...
线面消隐技术主要有两种方法:Z缓冲法(也称为深度缓冲法)和扫描线算法。Z缓冲法通过在每个像素位置存储一个深度值来判断新绘制的对象是否遮挡了已存在的对象。扫描线算法则通过对屏幕每一行进行遍历,根据线和面的...
7. 交换缓冲区:使用glutSwapBuffers()来呈现最终图像,实现双缓冲以避免闪烁。 此外,`PrintGL.dsp`和`PrintGL.dsw`是Visual Studio项目文件,用于管理源代码、编译设置和依赖项。 学习这个项目,你将接触到...
消隐算法主要基于深度缓冲区,即每个像素对应一个Z值(深度值),表示该像素背后的3D点距离观察者的位置。当绘制新像素时,会比较新像素的Z值与缓冲区中的现有Z值,如果新像素更靠近观察者,则更新缓冲区并绘制该...
在这个项目中,我们关注的是软件消隐,因为描述中提到了“程序中利用了凸多面体和远近法来实现”,这表明该算法可能属于基于深度缓冲(Z-Buffer)或扫描线(Scan Line)等经典方法的一种。 凸多面体是相对简单的...
实现一个立方体的消影演示。 要求: 可以用键盘操纵立方体的旋转(比如左键按一下向左...不可以用OpenGL直接画Cube实现消影过程。必须自行写算法实现,否则为0分。 立方体的6个面分别用不同颜色标注,方便进行区分。
常见的消隐算法有Z-Buffer(深度缓冲)法、画家算法和扫描线算法等。 1. Z-Buffer算法:这种方法基于像素级别的比较,每个像素都有一个与之关联的Z值(深度值)。在绘制新像素时,会将其Z值与当前缓冲区的Z值比较,...
- 在C++中,可以利用OpenGL或DirectX的双缓冲特性。 - Python的Pygame库也支持双缓冲。 - 在Unity3D等游戏引擎中,双缓冲是默认的渲染方式。 这个“双缓冲例子”可能包含了创建双缓冲环境、在后端缓冲区绘图、交换...