OPENGL中的glutinit函数在win32中如何使用?(大家来帮帮忙呀)
发布时间:2011-06-23 14:26:20 文章来源:www.iduyao.cn 采编人员:星星草
OPENGL中的glutinit函数在win32中怎么使用?(大家来帮帮忙呀)
好多opengl书上的例子给出的都有这样的代码:
int main( int argc, char** argv )
{
glutInit(&argc, argv);
..............
}
可是在编win32项目时,主函数是这样的
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
我如何想使用OpenGL,应该怎么办呢?这个glutInit函数的参数应该是什么呢?
本人初学者,请各位大侠不吝赐教,先行谢过啦~~
------解决方案--------------------
glut这个其实是封装了一些win32下创建窗口消息循环等相对底层的东西,封装的越多开发起来越快但能自己控制的东西也就越少,走win32路线对于理解windows下gl的底层处理机制还是有好处的,推荐你看看nehe的教程:http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=01,这个就是直接win32的gl版本,有了这个框架你再套用书上的例子就不难了。
------解决方案--------------------
直接新建控制台应用程序,我给你一个例子
#include <windows.h>
#include <glew.h>
#include <glut.h>
#pragma comment(lib,"glew32.lib")
float buffer[]=
{
-1,1,-1,0,0,1,
-1,1,1,0,1,0,
1,1,1,1,0,0,
1,1,-1,0.5,0.5,0.5,
-1,-1,-1,1,0,1,
-1,-1,1,1,1,0,
1,-1,1,0,1,1,
1,-1,-1,1,1,1
};
byte index[]=
{
0,1,2,3, 7,6,5,4, 0,4,5,1, 2,6,7,3, 0,3,7,4, 1,5,6,2
};
void display()
{
static float xx=0;
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glTranslatef(0,0,-5);
glRotatef(xx,1,0,0);
glRotatef(xx,0,1,0);
glDrawElements(7,sizeof index,GL_UNSIGNED_BYTE,&index);
glCopyPixels(100,100,200,200,GL_COLOR);
glutSwapBuffers();
glutPostRedisplay();
xx++;
}
void main(int main_a,char **main_b)
{
glutInit(&main_a,main_b);
glutInitDisplayMode(GLUT_DOUBLE|GLUT_DEPTH|GLUT_RGBA);
glutInitWindowPosition(0,0);
glutInitWindowSize(400,400);
glutCreateWindow("fds");
glewInit();
glMatrixMode(GL_PROJECTION);
gluPerspective(45,1,1,1000);
glMatrixMode(GL_MODELVIEW);
glClearColor(0,0,0,0);
glClearDepth(1);
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);
glEnableClientState(GL_COLOR_ARRAY);
glEnableClientState(GL_VERTEX_ARRAY);
glColorPointer(3,GL_FLOAT,sizeof(float)*6,&buffer[3]);
glVertexPointer(3,GL_FLOAT,sizeof (float)*6,&buffer[0]);
glWindowPos2f(0,0);
glutDisplayFunc(display);
glutMainLoop();
}
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
关于visual studio 2005的工程文件*.vcproj的问题
请问:Visual Studio 2005 新建一个工程之后,会自动生产一个*.vcproj的一个文件,这...
-
用MFC画图的问题
我现在要用随机数产生300个固定的点保存在数组中,并在ondraw里画出这300个点,而且通过定时器使这300个点做运动。...
-
VS2010中的C++怎么连接数据库?
之前一直用VC++6.0的、现在想学学用最新的VS、但是感觉连接数据库和之前不一样了、具体应该怎么弄...
-
CLI编程 高手帮忙
我现在用C++/CLI 混编,
我有一个方法, 是调用一个C 的类库 得到一个 char * 的值
现在我...
-
新手求教::VC.NET2003里面的"添加变量"菜单变灰了,怎么弄?
最近学着用.net写程序,以前用的是6.0,不知道为什么我设计的EDIT Con...
-
刚学习vc.net 请教一个String做参数的问题,请高手指教一下
下面的代码为什么不能编译呢,出现这个错误呢
.\clr.cpp(12) : error C3...
-
VS2003中通过ADO取SQL2003中bigint 负值变正值的问题,求助!
在SQL2003中 数据库中假设 一个bigint类型的数据位-1234这样的值,通过如...
-
新手学习VC用那个版本的编译器好!
新手学习VC用那个版本的编译器好!?
------解决方案--------------------
VC++6.0
------解决...
-
正则表达式
有这样的字符串
"1,',2"",3"
希望将单个的"替换成单引号,将连续两个的""替换成一个双引号。
正则表达式该如何写。
...
-
为什么<<精通MFC>>附带的源程序不能编译成功
vc2010编译后有两个错误提示,分别如下,
错误一:
1>c:\program files\microsoft vi...