全屏幕OpenGL程序

2016-02-19 15:34 0 1 收藏

今天图老师小编给大家展示的是全屏幕OpenGL程序,精心挑选的内容希望大家多多支持、多多分享,喜欢就赶紧get哦!

【 tulaoshi.com - 编程语言 】

  其实在BCB中实现全屏幕OpenGL的原理是很简单的,只要在窗口OpenGL程序的基础上做一个小小的改动即可:只要将窗口属性修改为WS_POPUP就可以了。

  具体如下:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  在窗口类的CreateParam()成员函数中加入如下语句:

  Params.Style=WS_POPUP|WS_CLIPCHILDREN|WS_CLIPSIBLINGS;

  将相应窗口修改成WS_POPUP型窗口,另两个是为支持OpenGL为设的。

  仍在窗口类的CreateParam()成员函数,加入如下语句:

  ChangeResolution(800,600);

  Params.Width=800;

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  Params.Height=600;

  Params.X=Params.Y=0;

  第一句将屏幕分辨率设定为800X600(可以是显示卡支持的任意值)

  然后修改窗体大小使之占满全屏。

  ChangeResolution()是一个自编的小函数,其原理如下:

  用WINAPI:EnumDisplaySettings()查询并取得所需的显示模式

  用WINAPI:ChangeDisplaySettings()修改显示模式。

  ChangeResolution()的完整代码:

  

BOOL ChangeResolution(DWORD w, DWORD h) {
DEVMODE devMode;
LONG modeSwitch;
LONG i;
CHAR buf[256];
i = 0;
do {
modeSwitch = EnumDisplaySettings(NULL, i, &devMode);
i++;
} while(( (devMode.dmBitsPerPel!=16)
||(devMode.dmPelsWidth != w)
||(devMode.dmPelsHeight != h) )
&& (modeSwitch) );
/* Okay see if we found a mode */
if (!modeSwitch) { }
else {
modeSwitch = ChangeDisplaySettings(&devMode, 0);
if (modeSwitch!=DISP_CHANGE_SUCCESSFUL)
{
//Might be running in Windows95, let's try without the hertz change
devMode.dmBitsPerPel = 16;
devMode.dmPelsWidth = w;
devMode.dmPelsHeight = h;
devMode.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
modeSwitch = ChangeDisplaySettings(&devMode, 0);
}
}
return TRUE;
}

  样本程序

  说明:通常这个程序运行时会看到屏幕底部有道白线,这是任务栏造成的,如果你将它的总在最前面(always on top)去掉或者将本程序窗口作成Always On Top型就不会再看到它了。

来源:https://www.tulaoshi.com/n/20160219/1609905.html

延伸阅读
ss[ss_x][yy]=z2;              /* 将字符读入编辑数组 */     y++;                          /* 屏幕光标后移一列 */ &n...
   coord()                                    /* 显示标尺行 */ {   int i,j,k,g;   g=m*BP;     ...
一、简介 OpenGL是一个开放的三维图形软件包,它独立于窗口系统和操作系统,以它为基础开发的应用程序可以十分方便地在各种平台间移植;并且便于二维、三维图形算法,可保证算法的正确性和可靠性。 在WIN98或WIN95的WINDOWS\SYSTEM目录下有两个动态链接库:opengl32.dll和glu32.dll。这是Opengl应用程序正确运行所必需的。 ...
可惜一开始没能画成圆,所以整个过程都是菱形的变换,希望大家多多指教,能够想办法把初始状态就围成一个圆.#include "stdlib.h" #include"graphics.h" main() {int gd=DETECT,gr,a[8],b[8],x,y,i,j,c;  initgraph(&gd,&gr,"");  randomize();  for(;!kbhit();)  {x=rand()%500+100; /*随...
去掉标题栏: requestWindowFeature(Window.FEATURE_NO_TITLE); API上是这么说的: int     FEATURE_NO_TITLE     Flag for the "no title" feature, turning off the title at the top of the screen. 屏幕全屏: getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); API上是这么说的...

经验教程

368

收藏

59
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部