- 浏览: 165222 次
- 性别:
- 来自: 广州
-
最新评论
-
雷蕾_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 1008本文列举Jeff Johnson:《GUI设计禁忌》一书中 ... -
LOD地形设计(三)
2010-01-05 05:03 1051LOD地形根据视点的变化决定是否进行网格分割,因此系统应设计一 ... -
LOD地形设计(二)
2010-01-05 05:02 1233自从LOD地形第一节推出以来,受到不少朋友的关注,本人真是受宠 ... -
LOD地形设计(一)
2010-01-05 05:01 1158在大规模的三维场 ... -
Windows SDK笔记
2009-04-16 16:45 1423应程序需求需要重写窗体内子控件某一特定消息,可怜我苦苦找了 ... -
关于的glut 的配置
2009-02-09 17:46 1727OpenGL 是一套 用于三维作图的API。与Direct3 ... -
C语言读取bmp位图文件(含bmp格式定义)
2009-02-09 17:45 3961loadbmp.h #ifndef _LOADBMP_H_ ... -
openGL贴图(借助glx),并测试性能(FPS)2
2009-02-09 17:45 1219client.c #include <sys/type ... -
alpha混合技术
2009-02-09 17:44 1523alpha混合技术 alpha混合技术对熟悉游戏的人来说不会 ... -
C语言将raw data(rgb/rgba)写成bmp文件(bmp24或32)
2009-02-09 17:44 3785int bmp_write(unsigned char *im ... -
OpenGL坐标变换专题
2009-02-09 17:43 2554OpenGL通过相机模拟、可 ... -
对话框中OpenGL的设置
2009-02-09 17:43 2262from:http://huhuiowen.blog.16 ... -
OpenGL曲线绘制:线段
2009-02-09 17:42 1928以线段方式绘制曲线。例如:正弦曲线。 glBegin(GL_ ... -
用VC++做OpenGL程序框架时出现非法错误
2009-02-09 17:40 10431.OpenGL.cpp 文件包含的头文件有没有{}不配对的情 ... -
opengl编写游戏的可移植性 具体表现
2009-02-09 17:39 1107OpenGL是个与硬件无关的软件接口,可以在不同的平台如Win ... -
什么是显卡的OpenGL模式
2009-02-09 17:39 1691OpenGL是近几年发展起来的一个性能卓越的三维图形标准。 ... -
关于-opengl在魔兽中的应用
2009-02-09 17:38 2049OpenGL在画质上是优于Direct的,这个“画质”不是指感 ... -
如何让显卡支持OpenGL模式????????
2009-02-09 17:38 3456OPENGL 不支持问题 这也 ... -
opengl3D台球源代码
2009-01-20 09:59 24693D台球,可以平面也可以从不同角度击球,使用OPENGL渲染, ... -
Jeff Molofee(NeHe)的OpenGL教程 - 碰撞检测与模型运动
2009-01-20 09:30 1666原 文 : Lesson 31: Collis ...
相关推荐
7. 交换缓冲区:使用glutSwapBuffers()来呈现最终图像,实现双缓冲以避免闪烁。 此外,`PrintGL.dsp`和`PrintGL.dsw`是Visual Studio项目文件,用于管理源代码、编译设置和依赖项。 学习这个项目,你将接触到...
同时,为了提高性能,可以考虑使用双缓冲技术,避免画面闪烁。 总的来说,实现VC图像处理中的消隐效果,需要深入理解3D图形学、MFC框架以及选择的图形库(如OpenGL或Direct3D)。通过精心设计和编码,你可以创建出...
3. **后期处理**:进行消隐、光照效果、纹理贴图等操作,以增强视觉效果的真实感。 4. **绘制输出**:最后,将处理后的图形绘制到屏幕窗口上。 ##### 利用双缓存技术实现动态显示 在OpenGL中实现双缓存的关键步骤...
为了提高性能,通常会使用双缓冲技术,防止在渲染新帧时出现闪烁。 最后,考虑到实际项目的需求,可能还需要涉及到纹理映射、光照模型、阴影效果等更复杂的图形处理技术。VC++提供了丰富的库支持,允许开发者创建...
进行消隐、光照、纹理、明暗处理;绘制场景,输出到屏幕窗口。 2. 基于OpenGL的三维曲面动态显示实现技术 为了实现三维曲面动态显示,需要连续地绘制三维曲面并显示场景,用不同的曲面数据刷新屏幕视窗。在OpenGL...
对于空心曲轴设计系统,通过使用OpenGL的深度缓冲区和模板缓冲区,实现了三维形体的消隐处理。深度缓冲区用于面消隐,模板缓冲区则用于线框消隐。在模板缓冲区的帮助下,可以控制特定区域是否被绘制,如只在模板值为...
3. **图形处理**:进行消隐处理以消除因遮挡产生的视觉干扰,同时应用光照和纹理效果,增加图形的真实感和细节。 4. **绘制与输出**:将处理后的图形绘制到帧缓冲区,并从缓冲区将图像数据输出到屏幕上。 【总结】...
4. 在Z缓冲器消隐算法中,需要两张表存放相应数据,一张叫**Z缓冲区**,用来存放对应像素的**深度值**,另一张叫**颜色缓冲区**,用来存放像素的**颜色信息**。 5. Cohen-Sutherland编码裁剪算法中,如果线段两个...