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程序全屏等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)