社区
C++ 语言
帖子详情
关于OPEN GL的问题
wangju19870301
2007-05-03 04:36:52
请问如何在Visual C++中进行设置,才能让它能运行关于OPEN GL的程序?
...全文
780
10
打赏
收藏
关于OPEN GL的问题
请问如何在Visual C++中进行设置,才能让它能运行关于OPEN GL的程序?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jixingzhong
2007-05-03
打赏
举报
回复
要能运行关于OPEN GL的程序,
如下:
1、拷贝glut32.dll到你的windows\system目录
2、拷贝glut32.lib到你的编译器的lib目录并将glut.h拷贝到你的编译器的include\gl目录.
3、在project>settings中设置链接到glut32.lib,glu32.lib和opengl32.lib(写在最前面)
jixingzhong
2007-05-03
打赏
举报
回复
【转】VC中OpenGL的编程步骤
1. 使用AppWizard创建应用程序框架。
在文档和视结构中,视负责窗口中内容的显示,因此所有的OpenGL绘制工作应放在视类进行;
2. 利用ClassWizard给视类添加如下成员函数:
重载PreCreateWindow函数;
响应WM_CREATE消息的OnCreate函数;
响应WM_SIZE消息的OnSize函数;
响应WM_ERASEBKGND消息的OnEraseBKgnd函数;
响应WM_DESTROY消息的OnDestroy函数;
重载OnInitialUpdate函数
3. 在PreCreateWindow函数中加入如下语句:
cs.style=cs.style|WS_CLIPSIBLINGS|WS_CLIPCHILDREN;
窗口必须设置以上属性,否则像素格式就不能正确设置;
4. 设置像素格式,创建绘制描述表。
这一过程放在响应WM_CREATE消息的OnCreate函数中。WM_CREATE消息窗口被创建时产生。
像素格式定义显示设备的三十特性,比如颜色位平面的数量和组织方式(RGB模式还是索引模式),是否采用双缓存模式等等。OpenGl和GDI(Windows的图形设置接口)的像素格式不同,而Windows应用中窗口的缺省设置是GDI像素格式,所以需要为执行OpenGL绘制任务的窗口专门指定像素格式。对每个窗口,像素格式只能设置一次。
绘制描述表与设置描述表类似,但包含了更多有关OpenGL绘制信息。OpenGL依赖绘制描述表操作显示硬件,因此调用OpenGL命令前,必须创建描述表并使其成为当前的绘制描述表。
设置像素格式、创建绘制描述是每个窗口进行OpenGl绘制前必不可少的步骤,所以放在OnCreate函数中最为合适。
5. 响应WM_SIZE消息。
当视窗的大小改变时,需发送WM_SIZE消息。在WM_SIZE的消息响应函数中可以获知
改变后窗口的大小,因此在其中可以调用glViewport对场景的窗口变换进行更改以后适应窗口大小的改变,还可通过glFrustum等函数重新设置投影变换,使得当窗口的大小发生改变时,显示在窗口中的场景不会发生扭曲。
6. 响应WM_ERASEBKGND消息。
当需要重新设置窗口背景时,产生WM_ERASEBKGND消息。处理该消息的缺省操作是用当前背景色填充整个窗口。处理函数做适当改变:注释掉OnEraseBKgnd函数所有的语句,添加return TRUE,使该函数不执行操作,仅返回TRUE值。
7. 重载OnInitUpdate函数。
OnInitUpdate函数为视对象专有,在视第一次显示之前,文档和视的结构刚刚被建起之后调用,此时,从视对象中可以获得与之相连的文档对象中的信息。根据文档和视的关系,OpenGL的绘制信息一般通过文档对象存取,通过视对象,因此,在OnInitUpdate中适合做OpenGL的绘制前的初始化工作。初始化工作包括创建列表(显示列表索引作为视类对象的成员变量保存)。设置光照参数,装载纹理映射贴图,确定融合方式及参数,设置雾化参数以及其它绘制场景前需完成的工作。必要时可设置时钟,程序在以后的运行中将定时接收到WM_TIMER消息,只要在该消息的响应函数中有规律地改变场景设置,并使视图重新绘制,就可以在窗口中形成动画效果。
8. 在OnDraw函数中绘制OpenGL场景。
所有的绘制工作都应放在OnDraw函数中。
9. 响应WM_TIMER消息。
WM_TIMER消息由程序中设定的时钟产生。若未设定时钟,则不用响应WM_TIMER消息。在WM_TIMER的消息处理函数中,更新场景,然后发送WM_PAINT消息或直接调用OnDraw函数,使窗口中显示改变后的场景。如此反复,形成动画。
10. 响应WM_DESTROY消息。
WM_DESTROY消息在窗口销毁时产生。在WM_DESTROY的消息的处理函数中删除描述表。必要时重载基本应用框架中应用程序类的 OnIdle函数。OnIdle函数在程序的消息队列为空时被调用,该函数执行的功能与gluIdleFunc函数设定的空闲回调函数的功能相似,即执行一些后台任务。
jixingzhong
2007-05-03
打赏
举报
回复
VC下配置openGL
最近在学习openGL,就在网上找了一些介绍openGL在VC下配置的方法,
首先,你必须有最新版本的GLUT,在这里下载http://www.xmission.com/~nate/glut.html
下载这个glut-3.7.6-bin.zip
然后,解压了文件,拷贝glut32.dll到你的windows\system目录,拷贝glut32.lib到你的编译器的lib目录并将glut.h拷贝到你的编译器的include\gl目录.
最后打开VC++6.0,建立一个空的控制台应用程序,也就是project中的Console Application在project>settings中设置链接到glut32.lib,glu32.lib和opengl32.lib(写在最前面).OK!
Y___Y
2007-05-03
打赏
举报
回复
#include <windows.h> // Windows的头文件
#include <GL/gl.h> // 包含最新的gl.h,glu.h库
#include <GL/glu.h> // 包含OpenGL实用库
#include <GL/glaux.h>
#include <stdio.h> // 标准输入/输出库的头文件
#pragma comment(lib,"opengl32")
#pragma comment(lib,"glu32")
#pragma comment(lib,"glaux")
......
static PIXELFORMATDESCRIPTOR pfd= // /pfd 告诉窗口我们所希望的东东,即窗口使用的像素格式
{
sizeof(PIXELFORMATDESCRIPTOR), // 上述格式描述符的大小
1, // 版本号
PFD_DRAW_TO_WINDOW | // 格式支持窗口
PFD_SUPPORT_OPENGL | // 格式必须支持OpenGL
PFD_DOUBLEBUFFER, // 必须支持双缓冲
PFD_TYPE_RGBA, // 申请 RGBA 格式
bits, // 选定色彩深度
0, 0, 0, 0, 0, 0, // 忽略的色彩位
0, // 无Alpha缓存
0, // 忽略Shift Bit
0, // 无累加缓存
0, 0, 0, 0, // 忽略聚集位
16, // 16位 Z-缓存 (深度缓存)
0, // 无蒙板缓存
0, // 无辅助缓存
PFD_MAIN_PLANE, // 主绘图层
0, // Reserved
0, 0, 0 // 忽略层遮罩
};
if (!(hDC=GetDC(hWnd))) // 取得设备描述表了么?
{
KillGLWindow(); // 重置显示区
MessageBox(NULL,"不能创建一种相匹配的像素格式","错误",MB_OK|MB_ICONEXCLAMATION);
return FALSE; // 返回 FALSE
}
if (!(PixelFormat=ChoosePixelFormat(hDC,&pfd))) // Windows 找到相应的象素格式了吗?
{
KillGLWindow(); // 重置显示区
MessageBox(NULL,"不能设置像素格式","错误",MB_OK|MB_ICONEXCLAMATION);
return FALSE; // 返回 FALSE
}
if(!SetPixelFormat(hDC,PixelFormat,&pfd)) // 能够设置象素格式么?
{
KillGLWindow(); // 重置显示区
MessageBox(NULL,"不能设置像素格式","错误",MB_OK|MB_ICONEXCLAMATION);
return FALSE; // 返回 FALSE
}
if (!(hRC=wglCreateContext(hDC))) // 能否取得着色描述表?
{
KillGLWindow(); // 重置显示区
MessageBox(NULL,"不能创建OpenGL渲染描述表","错误",MB_OK|MB_ICONEXCLAMATION);
return FALSE; // 返回 FALSE
}
if(!wglMakeCurrent(hDC,hRC)) // 尝试激活着色描述表
{
KillGLWindow(); // 重置显示区
MessageBox(NULL,"不能激活当前的OpenGL渲然描述表","错误",MB_OK|MB_ICONEXCLAMATION);
return FALSE; // 返回 FALSE
}
MoveWindow(hWnd,200,100,width,height,true);
ShowWindow(hWnd,SW_SHOW); // 显示窗口
SetForegroundWindow(hWnd); // 略略提高优先级
SetFocus(hWnd); // 设置键盘的焦点至此窗口
大致是这样
「已注销」
2007-05-03
打赏
举报
回复
说错了,是nehe.gamedev.net
「已注销」
2007-05-03
打赏
举报
回复
OpenGL需要在project->setting->link里面把openGL的库加上。
在windows下是以下三个:
opengl32.lib glu32.lib glaux.lib
然后,学习openGL最好的网站是NeHe的www.gamedev.com,我坚持学了前20课,感觉收获很多。
wonxlei
2007-05-03
打赏
举报
回复
就算机图形学…………
huangfeng080
2007-05-03
打赏
举报
回复
要学OPENGL的话买本书来看啊
「已注销」
2007-05-03
打赏
举报
回复
搜NEHE Opengl教程
lightnut
2007-05-03
打赏
举报
回复
http://www.codeproject.com/opengl/
上面有很多例子, 从入门到中高级话题, 都有! 自己看看;)
2023 NO_VB.0.0.0.11E_230516-CEMS_常规冷凝-2305291500.zip
2023 NO_VB.0.0.0.11E_230516-CEMS_常规冷凝-2305291500.zip
CAD+说明书侧装式少齿差传动卷扬机设计
CAD+说明书侧装式少齿差传动卷扬机设计
cryptomator(Java)
「cryptomator(Java)」是开发工具/插件(Java)。项目简介:Cryptomator for Windows, macOS, and Linux: Secure client-side encryption for your cloud storage, ensuring privacy and control over your data.可直接使用,适合日常开发提效与学习借鉴。
CDBurnerXP v4.5.8.7128 x64 精简安装版
CDBurnerXP 是一款免费、轻量级的光盘刻录工具,本资源为 v4.5.8.7128 64位精简安装版(Minimal),去除了冗余组件与多语言包,仅保留核心刻录功能,安装包体积更小、启动更快。 本软件不支持 macOS/Linux 平台,仅限 Windows x64 系统使用。
verilog crc16实现
源码链接: https://pan.quark.cn/s/a4b39357ea24 CRC16-CCITT --------- CRC校验(循环冗余校验) http://www.ip33.com/crc.html CRC校验(循环冗余校验)小知识 CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。 循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。 CRC算法参数模型解释: NAME:参数模型名称。 WIDTH:宽度,即CRC比特数。 POLY:生成项的简写,以16进制表示。 例如:CRC-32即是0x04C11DB7,忽略了最高位的"1",即完整的生成项是0x104C11DB7。 INIT:这是算法开始时寄存器(crc)的初始化预置值,十六进制表示。 REFIN:待测数据的每个字节是否按位反转,True或False。 REFOUT:在计算后之后,异或输出之前,整个数据是否按位反转,True或False。 XOROUT:计算结果与此参数异或后得到最终的CRC值。 此依赖共含4个非常用的CRC16校验算法 CRC16-CCITT(0x1021) CRC16-CCITT-FALSE(0x1021) CRC16-XMODEM(0x1021) CRC16-X25(0x1021) 常见CRC参数模型: 常见CRC参数模型 JAVA-依赖使用 How to Use: Step 1. Add the JitPack repository to your build f...
C++ 语言
65,213
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章