OpenGL环境搭建(Windows下VS2010)和版本信息查询
来源:互联网 发布:未知usb设备 端口重置 编辑:程序博客网 时间:2024/06/06 03:37
环境搭建
环境搭建需要注意的:
1.要自己去下载 glut3.7包(SDK非源码),解压,然后把glut32.dll的文件都放到windows/system32文件夹里面去;
把glut32.lib放到VC的C:\Program Files\Microsoft SDKs\Windows\v7.0A\Lib文件夹里面;
把glut.h头文件放到C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\gl文件夹下。
2.也有可能因为直接copy的代码有隐藏文字,既每行有两个看不见的字符,要把每行紧挨着语句的前两个字符删除掉,就可以了。
关于第一点的原因:glut.h下面有三个静态库的引入(如下),所以直接拷贝到工程目录下面是不可以的。
#include <GL/gl.h>
#include <GL/glu.h>
# ifdef GLUT_USE_SGI_OPENGL
# pragma comment (lib, "opengl.lib") /* link with SGIOpenGL for Windows lib */
# pragma comment (lib, "glu.lib") /* link withSGI OpenGL Utility lib */
# pragma comment (lib, "glut.lib") /* link withWin32 GLUT for SGI OpenGL lib */
# else
# pragma comment (lib, "opengl32.lib") /* link withMicrosoft OpenGL lib */
# pragma comment (lib, "glu32.lib") /* link withMicrosoft OpenGL Utility lib */
# pragma comment (lib, "glut32.lib") /* link withWin32 GLUT lib */
# endif
上述的头文件路径里面还有gl.h,glu.h;
Lib文件路径里面还有opengl32.lib,glu32.lib;
Dll文件路径里面还有opengl32.dll,glu32.dll;
Windows的Win32库,MFC/ATL/WTL库里面也是这样的文件放置组织结构,所以无论如何都必须保证gl.h,glu.h及其库文件的引入,这里是用glut的方式来使用Opengl函数。
编译通过的小demo:
#include <gl/glut.h>
void init()
{
::glClearColor(1.0,1.0,1.0,0.0);
::glMatrixMode(GL_PROJECTION);
::gluOrtho2D(0.0,400.0,0.0,550.0);
}
typedef struct S2DFPoint//用矩阵比用结构体或类的方式易于初始化
{
GLfloat p[2];
}TwoDFPoint;
void lineSegment()
{
::glClear(GL_COLOR_BUFFER_BIT);
::glColor3f(1.0,0.0,0.0);
int point1[]={10,10};
int point2[]={350,530};
int point3[]={380,40};
int point4[]={160,500};
int point5[]={20,350};
//::glBegin(GL_LINES);
//::glBegin(GL_LINE_STRIP);
::glBegin(GL_LINE_LOOP);
::glVertex2iv(point1);
::glVertex2iv(point2);
::glVertex2iv(point3);
::glVertex2iv(point4);
::glVertex2iv(point5);
::glEnd();
::glFlush();
}
void main(int argc,char** argv)
{
::glutInit(&argc,argv);
::glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
::glutInitWindowPosition(50,100);
::glutInitWindowSize(900,550);
::glutCreateWindow("Hello OpenGL program I am Jeese!");
init();
::glutDisplayFunc(lineSegment);
::glutMainLoop();
}
更详细参考:
http://blog.csdn.net/xuguangsoft/article/details/7966338
版本信息查询
#include<Windows.h>#include <stdio.h>#include <GL/glut.h>int main(int argc, char** argv){glutInit(&argc, argv);//显示模式初始化glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);//GLUT_SINGLE//定义窗口大小glutInitWindowSize(300, 300);//定义窗口位置glutInitWindowPosition(100, 100);//创建窗口glutCreateWindow("OpenGL Version");const GLubyte* name = glGetString(GL_VENDOR); //返回负责当前OpenGL实现厂商的名字const GLubyte* biaoshifu = glGetString(GL_RENDERER); //返回一个渲染器标识符,通常是个硬件平台const GLubyte* OpenGLVersion = glGetString(GL_VERSION); //返回当前OpenGL实现的版本号const GLubyte* gluVersion = gluGetString(GLU_VERSION); //返回当前GLU工具库版本//const GLubyte* glShaderVer = gluGetString(GL_SHADING_LANGUAGE_VERSION); //返回当前GLU工具库版本const GLubyte* glExtVer = gluGetString(GL_EXTENSIONS); //返回当前GLU工具库版本printf("OpenGL实现厂商的名字:%s\n", name);printf("渲染器标识符:%s\n", biaoshifu);printf("OpenGL实现的版本号:%s\n", OpenGLVersion);// AMD是4.2版本,Intel是3.1版本printf("OGLU工具库版本:%s\n", gluVersion);//printf("OGLShader版本号:%s\n", glShaderVer);printf("OGL拓展版本号:%s\n", glExtVer);GLint rBits, gBits, bBits, aBits;glGetIntegerv(GL_RED_BITS, &rBits);//8glGetIntegerv(GL_GREEN_BITS, &gBits);//8glGetIntegerv(GL_BLUE_BITS, &bBits);//8glGetIntegerv(GL_ALPHA_BITS, &aBits);//8GLint iBits, dBits, sBits;glGetIntegerv(GL_INDEX_BITS, &iBits);//32 Intel是3.1版本; 0 AMD是4.2版本glGetIntegerv(GL_DEPTH_BITS, &dBits);//24glGetIntegerv(GL_STENCIL_BITS, &sBits);//8// Intel是3.1版本; 0 AMD是4.2版本OGL实现都废弃了ACCUM累积缓存// 因为OGL 3.0引入了支持本地浮点值的颜色缓存区,ACCUM缓存相关的事情很容易在浮点缓冲区上实现。GLint acRBits, acGBits, acBBits, acABits;glGetIntegerv(GL_ACCUM_RED_BITS, &acRBits);//0 glGetIntegerv(GL_ACCUM_GREEN_BITS, &acGBits);//0glGetIntegerv(GL_ACCUM_BLUE_BITS, &acBBits);//0glGetIntegerv(GL_ACCUM_ALPHA_BITS, &acABits);//0// 当前OGL是否立体渲染(3D渲染)屏幕;Intel是3.1版本; 0 AMD是4.2版本都不支持GLint nStereoSupport;glGetIntegerv(GL_STEREO, &nStereoSupport); // Win7 OGL 3.1不支持 // 双缓存交换链:前台缓存,后台缓存;还是单缓存只有前台缓存;Intel是3.1版本; 0 AMD是4.2版本启用了都支持GLint nDoubleFrameBufferSupport;glGetIntegerv(GL_DOUBLEBUFFER, &nDoubleFrameBufferSupport);// Win7 OGL 3.1支持 // 辅助缓存;Intel是3.1版本不支持; AMD是4.2版本支持4个辅助颜色缓存GLint nAluColorBuffer;glGetIntegerv(GL_AUX_BUFFERS, &nAluColorBuffer);// Win7 OGL 3.1不支持,只有0个颜色辅助缓存while (1);return 0;}
对于拓展函数的查询,OGL3.1后需要glGetStringi来获取拓展的列表。
gluCheckExtension()
wgl中查询某个拓展函数是否存在用:
wglGetProcAddress("extFunName")
- OpenGL环境搭建(Windows下VS2010)和版本信息查询
- OpenGL环境搭建(Windows下VS2010)
- OpenGL Windows下环境搭建
- OpenGL VC6.0 和 VS2010 环境搭建
- VS2010搭建OpenGL环境
- OpenGL+vs2010环境搭建
- VS2010搭建OpenGL环境
- OpenGL---VS2010环境搭建
- 1.Windows下QT+VS2010环境搭建
- Windows下QT+VS2010环境搭建
- windows下搭建OpenGL ES开发环境
- windows下搭建OpenGL ES开发环境
- windows下搭建OpenGL ES开发环境
- 搭建VS2010,OpenGL开发环境
- opengl+vs2010+win7环境搭建
- Windows下MXnet GPU版本环境搭建
- VS2010环境下配置OpenGL
- Angular2环境搭建和相关信息查询
- c++标准库——STL容器的通用能力和操作
- 学习笔记——简单的正则表达式测试器
- Tomcat热部署方法(3种)
- Android 自己动手写ListView学习其原理 3 ItemClick,ItemLongClick,View复用
- ThinkPHP中的Session用法
- OpenGL环境搭建(Windows下VS2010)和版本信息查询
- 学习笔记——JavaScript中的正则表达式
- 经典开源C/C++项目
- java中的IO基础
- java中的IO基础2
- java中的IO基础3
- 总结一下各种IO方式
- Ubuntu12.04安装kvm简介
- 数据库分区分表