如何使用Opengl

如何使用Opengl,第1张

GetSystemMetrics( SM_CXSCREEN ), //此函数返回屏幕宽度

GetSystemMetrics( SM_CYSCREEN ), //此函数返回屏幕高度

使用这两个函数去注册窗口来捕捉屏幕大小即可。

建议你多了解一下Windows编程,下一个MSDN,查阅很方便,但是是英文。

可能我说的不够详细,我在补充一下,把窗口程式给你写一个。这个比较详细了,你自己在此基础上添加上你自己的参数,并将窗口高度和宽度替换即可。

//程式:

HWND hWnd; //声明一个窗口句柄

/

该处省略了注册窗口的过程

/

hWnd=CreateWindow(

LPCTSTR lpClassName, //创建窗口所用的窗口类的名称--"注册的窗口类名"

LPCTSTR lpWindowName, //窗口名--"即在窗口上面显示的标题"

DWORD dwStyle, //窗口风格,定义为普通型--WS_OVERLAPPEDWINDOW

int x, //窗口位置的x坐标--0

int y, //窗口位置的y坐标--0

int nWidth, //窗口的宽度--GetSystemMetrics( SM_CXSCREEN )

int nHeight, //窗口的高度--GetSystemMetrics( SM_CYSCREEN )

HWND hWndParent, //父窗口句柄--NULL

HMENU hMenu, //菜单句柄--NULL

HINSTANCE hInstance, //应用程序句柄--hInstance

LPVOID lpParam //一般都为NULL--NULL

);

//如上注册的窗口显示即为全屏显示

#include "stdafxh"

把stdafxh里面的改成:

#include <windowsh>

#include <GL/gluh>

#include <GL/glh>

#include <GL/gluth>

#include <GL/glauxh>

""和<>有很大的区别,在于搜索的路径不一样,楼主可以查阅相关资料

语法也有错误:glVertex3fv(&vdata [&tindices[i][0][0]]);

glVertex3fv(&vdata [tindices[i][1][0]]);

glVertex3fv(&vdata [tindices[i][2][0]]);

改为:

glVertex3fv(vdata [tindices[i][0]]);

   

glVertex3fv(vdata [tindices[i][1]]);

     

glVertex3fv(vdata [tindices[i][2]]);

我的运行环境是在QT IDE上运行的。470版。

如果你是在VC上运行应该也要加入opengl32,glut,glut32库(32位WIN上的),

另外,这个程序你是看不到一个球体的,因为你没有使用光照,只能看到一个轮廓。

我的Qt上我加入的库是:opengl32,glut,glee5(glee5是glee是自己编译的替换glut32库)

头加入了:windownh,gl/gleeh(gleeh就是glee的头文件在网上可以下载,比glh要高级,因为WIN上的glh只支持到opengl32的11版)

源文件:

#include <windowsh>///////////////////////////////

#include <GL/gleeh>

////////////////////////////////

#include <GL\gluth>

#include <mathh>

#define x 52573

#define z 85965

void mydisplay(void)

{

 

static GLfloat vdata[12][3]={{-x,00,z},

{x,00,z},

                              {-x,00,-z},

                              {x,00,-z},

{00,z,x},

{00,z,-x},

                              {00,-z,x},

                              {00,-z,-x},

                              {z,x,00},

{-z,x,00},

                              {z,-x,00},

{-z,-x,00}};

 static GLuint tindices[20][3]={{1,4,0},

{4,9,0},

                                {4,5,9},

                                {8,5,4},

                                {1,8,4},

{1,10,8},

{10,3,8},

                                {8,3,5},

{3,2,5},

{3,7,2},

{3,10,7},

                                {10,6,7},

                                {6,11,7},

{6,0,11},

{6,1,0},

{10,1,6},

                                {11,0,9},

                                {2,11,9},

                                {5,2,9},

                                {11,2,7}};

 int i;

glBegin(GL_TRIANGLES);

 for(i=0;i<20;i++)

{

     

glVertex3fv(vdata [tindices[i][0]]);//////////////////////////////////////////////

     glVertex3fv(vdata [tindices[i][1]]);/////////////////////////////////////////////

     glVertex3fv(vdata [tindices[i][2]]);////////////////////////////////////////////

 }

glEnd();

}

int main(int argc, char argv[])

{

 glutInit(&argc, argv);

 glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);

 glutInitWindowPosition(100, 100);

 glutInitWindowSize(400, 400);

 glutCreateWindow("第一个OpenGL程序");

 glutDisplayFunc(&mydisplay);

 glutMainLoop();

 return 0;

}

后面加了///////////////////////////////////是我修改了的。

我用的连接库是:

LIBS=-lopengl32 -lfreeglut -lglee5

以上就是关于如何使用Opengl全部的内容,包括:如何使用Opengl、如何vs2013中配置OpengGL的编程环境、如何使OpenGL程序全屏等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10007675.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存