- 浏览: 159899 次
- 性别:
- 来自: 广州
最新评论
-
雷蕾_ing:
...
python 模拟POST -
blink31:
TextOut不能换行,请问有其他的解决办法吗?
C++下的OpenGL文字显示的完美解决方案 -
lwz7512:
这么强悍!
在优酷的几道笔试题 -
lwz7512:
下了,谢谢分享!
opengl3D台球源代码 -
xltank:
今天过期了。。。
flash builder 序列号
from:http://huhuiowen.blog.163.com/blog/static/130103920083193167420/
对话框中OpenGL的设置
基于对话框的OpenGL图形程序的基本框架
1、 理论基础
a、在对话框中建立需要OpenGL绘图的窗口,并按OpenGL得要求设置窗口的属性和风格;
b、在该窗口的创建过程中,设置好显示的像素格式,并创建OpenGL绘制描述表RC;
c、在窗口的绘制过程中,首先获得Windows设备描述表DC,然后将其与事先设置好的OpenGL绘制表述表RC联系起来;
d、调用OpenGL命令进行图形绘制;
e、退出OpenGL图形窗口时,释放OpenGL绘制描述表RC和Windows设备描述表DC。
2、变成步骤
a、设置好OpenGL得编程环境
b、启动vc6.0,选择NEW菜单,在NEW对话框中选择Project标签,选择"MFC
AppWizard(exe)",新建一个基于对话框的工程。名称为MyDlgOpenGL。
c、删除对话框的静态文本控件。
d、选择insert->new
class菜单,在工程中插入一个新类COpenGL,基类选择generic CWnd。
e、利用MFC
ClassWizard为COpenGL类添加消息WM_CREATE、WM_PAINT得响应函数,WM_CREATE为了设置绘图像素格式,创建渲染描述表。WM_PAINT进行OpenGL渲染。
f、在OpenGL.h中加入源代码
public:
virtual ~COpenGL();
///////////////////////////////////////////////////////////
//添加的成员函数与成员变量
int MySetPixelFormat(HDC hdc);
void DrawColorBox(void);
HDC hdc;
HGLRC hglrc;
GLfloat step,s;
////////////////////////////////////////////////////////////
g、在文件OpenGL.cpp中加入如下代码
COpenGL::COpenGL()
{
//给成员变量赋初值
step = 0.0;
s = 0.1;
}
COpenGL::~COpenGL()
{
wglMakeCurrent(NULL,NULL);
wglDeleteContext(hglrc);//删除渲染描述表
::ReleaseDC(m_hWnd,hdc);//释放设备描述表
}
/////////////////////////////////////////////////////////////////////////////
// COpenGL message handlers
//设置像素格式
int COpenGL::MySetPixelFormat(HDC hdc)
{
PIXELFORMATDESCRIPTOR pfd = {
sizeof(PIXELFORMATDESCRIPTOR), // pfd结构的大小
1, // 版本号
PFD_DRAW_TO_WINDOW | // 支持在窗口中绘图
PFD_SUPPORT_OPENGL | // 支持 OpenGL
PFD_DOUBLEBUFFER, // 双缓存模式
PFD_TYPE_RGBA, // RGBA 颜色模式
24, // 24 位颜色深度
0, 0, 0, 0, 0, 0, // 忽略颜色位
0, // 没有非透明度缓存
0, // 忽略移位位
0, // 无累加缓存
0, 0, 0, 0, // 忽略累加位
32, // 32 位深度缓存
0, // 无模板缓存
0, // 无辅助缓存
PFD_MAIN_PLANE, // 主层
0, // 保留
0, 0, 0 // 忽略层,可见性和损毁掩模
};
int iPixelFormat;
// 为设备描述表得到最匹配的像素格式
if((iPixelFormat = ChoosePixelFormat(hdc, &pfd))
== 0)
{
MessageBox("ChoosePixelFormat Failed", NULL, MB_OK);
return 0;
}
// 设置最匹配的像素格式为当前的像素格式
if(SetPixelFormat(hdc, iPixelFormat, &pfd) ==
FALSE)
{
MessageBox("SetPixelFormat Failed", NULL, MB_OK);
return 0;
}
return 1;
}
int COpenGL::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CWnd::OnCreate(lpCreateStruct) == -1)
return -1;
// 设置当前的绘图像素格式
MySetPixelFormat(::GetDC(m_hWnd));
// 获得绘图描述表
hdc = ::GetDC(m_hWnd);
// 创建渲染描述表
hglrc = wglCreateContext(hdc);
// 使绘图描述表为当前调用现程的当前绘图描述表
wglMakeCurrent(hdc, hglrc);
return 0;
}
void COpenGL::OnPaint()
{
// CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
//调用OpenGL绘图函数进行图形绘制
// glClearColor(0.0,1.0,0.0,1.0);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//清除颜色缓存和深度缓存
s+=0.005;
if(s>1.0)
s=0.1;
step = step + 1.0;
if (step > 360.0)
step = step - 360.0;
glPushMatrix();
glScalef(s,s,s);
glRotatef(step,0.0,1.0,0.0);
glRotatef(step,0.0,0.0,1.0);
glRotatef(step,1.0,0.0,0.0);
DrawColorBox();
glPopMatrix();
glFlush();
SwapBuffers(hdc);
// Do not call CWnd::OnPaint() for painting messages
}
void COpenGL::DrawColorBox(void)
{
GLfloat p1[]={0.5,-0.5,-0.5}, p2[]={0.5,0.5,-0.5},
p3[]={0.5,0.5,0.5}, p4[]={0.5,-0.5,0.5},
p5[]={-0.5,-0.5,0.5}, p6[]={-0.5,0.5,0.5},
p7[]={-0.5,0.5,-0.5}, p8[]={-0.5,-0.5,-0.5};
GLfloat m1[]={1.0,0.0,0.0}, m2[]={-1.0,0.0,0.0},
m3[]={0.0,1.0,0.0}, m4[]={0.0,-1.0,0.0},
m5[]={0.0,0.0,1.0}, m6[]={0.0,0.0,-1.0};
GLfloat c1[]={0.0,0.0,1.0}, c2[]={0.0,1.0,1.0},
c3[]={1.0,1.0,1.0}, c4[]={1.0,0.0,1.0},
c5[]={1.0,0.0,0.0}, c6[]={1.0,1.0,0.0},
c7[]={0.0,1.0,0.0}, c8[]={1.0,1.0,1.0};
glBegin (GL_QUADS); //绘制多个四边形
glColor3fv(c1);
glNormal3fv(m1);
glVertex3fv(p1);
glColor3fv(c2);
glVertex3fv(p2);
glColor3fv(c3);
glVertex3fv(p3);
glColor3fv(c4);
glVertex3fv(p4);
glColor3fv(c5);
glNormal3fv(m5);
glVertex3fv(p5);
glColor3fv(c6);
glVertex3fv(p6);
glColor3fv(c7);
glVertex3fv(p7);
glColor3fv(c8);
glVertex3fv(p8);
glColor3fv(c5);
glNormal3fv(m3);
glVertex3fv(p5);
glColor3fv(c6);
glVertex3fv(p6);
glColor3fv(c3);
glVertex3fv(p3);
glColor3fv(c4);
glVertex3fv(p4);
glColor3fv(c1);
glNormal3fv(m4);
glVertex3fv(p1);
glColor3fv(c2);
glVertex3fv(p2);
glColor3fv(c7);
glVertex3fv(p7);
glColor3fv(c8);
glVertex3fv(p8);
glColor3fv(c2);
glNormal3fv(m5);
glVertex3fv(p2);
glColor3fv(c3);
glVertex3fv(p3);
glColor3fv(c6);
glVertex3fv(p6);
glColor3fv(c7);
glVertex3fv(p7);
glColor3fv(c1);
glNormal3fv(m6);
glVertex3fv(p1);
glColor3fv(c4);
glVertex3fv(p4);
glColor3fv(c5);
glVertex3fv(p5);
glColor3fv(c8);
glVertex3fv(p8);
glEnd();
}
h、在文件MyDlgOpenGLDlg.h中加入如下源代码。
////////////////////////////////////////////////////
//添加类COpenGL的头的说明文件
#include "OpenGL.h"
//////////////////////////////////////////////////////////////////////////
在class CMyDlgOpenGLDlg : public CDialog中添加
发表评论
-
GUI设计禁忌
2010-01-07 12:02 955本文列举Jeff Johnson:《GUI设计禁忌》一书中 ... -
LOD地形设计(三)
2010-01-05 05:03 989LOD地形根据视点的变化决定是否进行网格分割,因此系统应设计一 ... -
LOD地形设计(二)
2010-01-05 05:02 1185自从LOD地形第一节推出以来,受到不少朋友的关注,本人真是受宠 ... -
LOD地形设计(一)
2010-01-05 05:01 1086在大规模的三维场 ... -
Windows SDK笔记
2009-04-16 16:45 1377应程序需求需要重写窗体内子控件某一特定消息,可怜我苦苦找了 ... -
关于的glut 的配置
2009-02-09 17:46 1667OpenGL 是一套 用于三维作图的API。与Direct3 ... -
OpenGL的消隐与双缓冲(2)
2009-02-09 17:46 1596#include "stdafx.h" ... -
C语言读取bmp位图文件(含bmp格式定义)
2009-02-09 17:45 3855loadbmp.h #ifndef _LOADBMP_H_ ... -
openGL贴图(借助glx),并测试性能(FPS)2
2009-02-09 17:45 1158client.c #include <sys/type ... -
alpha混合技术
2009-02-09 17:44 1466alpha混合技术 alpha混合技术对熟悉游戏的人来说不会 ... -
C语言将raw data(rgb/rgba)写成bmp文件(bmp24或32)
2009-02-09 17:44 3658int bmp_write(unsigned char *im ... -
OpenGL坐标变换专题
2009-02-09 17:43 2504OpenGL通过相机模拟、可 ... -
OpenGL曲线绘制:线段
2009-02-09 17:42 1821以线段方式绘制曲线。例如:正弦曲线。 glBegin(GL_ ... -
用VC++做OpenGL程序框架时出现非法错误
2009-02-09 17:40 9761.OpenGL.cpp 文件包含的头文件有没有{}不配对的情 ... -
opengl编写游戏的可移植性 具体表现
2009-02-09 17:39 1050OpenGL是个与硬件无关的软件接口,可以在不同的平台如Win ... -
什么是显卡的OpenGL模式
2009-02-09 17:39 1619OpenGL是近几年发展起来的一个性能卓越的三维图形标准。 ... -
关于-opengl在魔兽中的应用
2009-02-09 17:38 1939OpenGL在画质上是优于Direct的,这个“画质”不是指感 ... -
如何让显卡支持OpenGL模式????????
2009-02-09 17:38 3254OPENGL 不支持问题 这也 ... -
opengl3D台球源代码
2009-01-20 09:59 23943D台球,可以平面也可以从不同角度击球,使用OPENGL渲染, ... -
Jeff Molofee(NeHe)的OpenGL教程 - 碰撞检测与模型运动
2009-01-20 09:30 1615原 文 : Lesson 31: Collis ...
相关推荐
基于对话框的opengl实例程序,演示如何建立基于对话框的opengl程序
制作一个基于MFC对话框的OpenGL类 基于MFC对话框的OpenGL类:COpenGL,可以在对话框程序中使用OpenGL了,并且提供了全屏与非全屏转换的两个函数,很容易使用,速度快。
在MFC对话框中使用OpenGL编程
基于对话框的OpenGL显示图形,上下左右控制前进后退视角,pageup和pagedown控制俯仰视角
在VC++6.0环境下,构建OpenGL的对话框
基于对话框的OpenGL编程框架,可以正常在对话框上添加控件,直接进入OpenGL编程,代码有注释
在网上找了半天,没有工程文件。MFC对话框下的OpenGL编程的例子,在对话框中,显示一个简单图形。
基于对话框的opengl作图,同时在对话框中创建了2个控件使图形显示在对话框中!但尚未完善,其中一个图形显示不好.好像是以前内存中的.大家先用着。
vc++6.0关于对话框与对话框的链接的实现以及基于对话框完成opengl绘图的实现
VISUAL C++ 对话框下的OpenGL,可以在对话框中绘制三维图形
一个很好的基于对话框的OpenGL程序框架,在图片控件上作图,可以实现光照、键盘、全屏、纹理等的控制。该框架能很好的将NeHe教程的代码移植过来。
这是一个在MFC对话框指定位置用OpenGL画图的简单程序,它的主要作用在于体现怎样将OpenGL与MFC对话框联系起来
MFC对话框+OpenGL,可以操作,这是个标准模板,鼠标左键右键中键都可以用
自己研究的,基于对话框的OpenGL的应用程序,在此基础上可以添加代码,进行设计。
在MFC的一个对话框上显示窗口,显示部分用单独的opengl类封装
opengl 在对话框中的应用 opengl 在对话框中的应用 源码 opengl 在对话框中的应用 源码 opengl 在对话框中的应用 源码 opengl 在对话框中的应用 源码
在vs2008平台下创建的基于mfc对话框模式的OpenGL框架,很简单~
VC2005建立基于对话框的MFC,使用opengl显示自绘图形。显示的是静态图形,可扩展。安装环境GLUT工具包。
具有放大缩小,能自动旋转功能,是个不错的学习openGL的学习代码
MFC OpenGL 中子发射模型 包括文件读取、坐标旋转、图像截取、投影、对话框交互等