初始化PIXELFORMATDESCRIPTOR的问题

时间:2021-12-05 17:28:23
代码如下:
        static PIXELFORMATDESCRIPTOR pfd     //错误出在这!
    {
        sizeof(PIXELFORMATDESCRIPTOR),
        1,
        PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER,
        PFD_TYPE_RGBA,
        bits,
        0,0,0,0,0,0,
        0,
        0,
        0,
        0,0,0,0,
        16,
        0,
        0,
        PFD_MAIN_PLANE,
        0,
        0,0,0
    };
但是显示有语法错误,指在在红色字段上,好象是在说类型前缺少“;”号。
具体显示如下:
D:\学习\自学实验\1\MyGL\OpenGl.c(171) : error C2143: syntax error : missing ';' before 'type'
我的头文件是:
#include <windows.h>
//#include <gl\gl.h>
//#include <gl\glu.h>
#include <gl\glut.h>
#include <gl\glaux.h>
其中glut.h, glut.dll, glut32.dll, glut32.lib, glut.lib我全都添加过了,书上说有了glut就可以不带gl.h,glu.h,不知道对不对?
还有用
#include <windows.h>
#include <gl\gl.h>
#include <gl\glu.h>
#include <gl\glaux.h>
的时候也是出现一样的错误提示。
gl.h,glu.h我也查过了,我机子上也是有的
查了MSDN也看不出是哪里的问题 ,请各位高手帮忙啊~

11 个解决方案

#1


帮忙顶了。

#2


是缺少 =,不是少;

#3


static PIXELFORMATDESCRIPTOR pfd     
--->
static PIXELFORMATDESCRIPTOR pfd =

#4


可以mark了~

#5


struct初始化~

比如
typedef _T
{
int a;
int b;
int c;
}T;

T t = {0, 1, 2};

这种方式整体化初始结构体~ 类似于数组的初始化~呵呵

#6


“=”号我少帖出来了,原来是有的~加了还是不行呢。。。

#7


不可能吧 ,可以的话把代码给我看看
huangyangman@163.com

#8


opengl32.lib添加了么?

#9


opengl32.lib添过了
哈,找到救星了~huangyangman()我给你发了,注意查收哦~

#10


恩,已收到你的邮件 
没什么问题 (
只是在C语言中所有的变量定义要放在块的最前面,也就是把
static PIXELFORMATDESCRIPTOR pfd =
{
sizeof(PIXELFORMATDESCRIPTOR),
1,
PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER,
PFD_TYPE_RGBA,
32,
0,0,0,0,0,0,
0,
0,
0,
0,0,0,0,
16,
0,
0,
PFD_MAIN_PLANE,
0,
0,0,0
};
放到你那个函数块的前面就行 如下:
BOOL CreateGLWindow(char* title,int width,int height,int bits,BOOL fullscreenflag)
{
/////////////////////////////////////////////////////////////////////
GLuint PixelFormat;
////////////////////////////////////////////////////////////////////
WNDCLASS wc;
////////////////////////////////////////////////////////////////////
DWORD dwExStyle;
DWORD dwStyle;
////////////////////////////////////////////////////////////////////
RECT WindowRect;
static PIXELFORMATDESCRIPTOR pfd =
{
sizeof(PIXELFORMATDESCRIPTOR),
1,
PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER,
PFD_TYPE_RGBA,
16,
0,0,0,0,0,0,
0,
0,
0,
0,0,0,0,
16,
0,
0,
PFD_MAIN_PLANE,
0,
0,0,0
};
WindowRect.left=(long)0;
WindowRect.right=(long)width;
WindowRect.top=(long)0;
WindowRect.bottom=(long)height;
其他的不用改了,另外把程序写完吧 呵呵

#11


哦,原来是这样,我一直没注意到呢,谢谢了~

#1


帮忙顶了。

#2


是缺少 =,不是少;

#3


static PIXELFORMATDESCRIPTOR pfd     
--->
static PIXELFORMATDESCRIPTOR pfd =

#4


可以mark了~

#5


struct初始化~

比如
typedef _T
{
int a;
int b;
int c;
}T;

T t = {0, 1, 2};

这种方式整体化初始结构体~ 类似于数组的初始化~呵呵

#6


“=”号我少帖出来了,原来是有的~加了还是不行呢。。。

#7


不可能吧 ,可以的话把代码给我看看
huangyangman@163.com

#8


opengl32.lib添加了么?

#9


opengl32.lib添过了
哈,找到救星了~huangyangman()我给你发了,注意查收哦~

#10


恩,已收到你的邮件 
没什么问题 (
只是在C语言中所有的变量定义要放在块的最前面,也就是把
static PIXELFORMATDESCRIPTOR pfd =
{
sizeof(PIXELFORMATDESCRIPTOR),
1,
PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER,
PFD_TYPE_RGBA,
32,
0,0,0,0,0,0,
0,
0,
0,
0,0,0,0,
16,
0,
0,
PFD_MAIN_PLANE,
0,
0,0,0
};
放到你那个函数块的前面就行 如下:
BOOL CreateGLWindow(char* title,int width,int height,int bits,BOOL fullscreenflag)
{
/////////////////////////////////////////////////////////////////////
GLuint PixelFormat;
////////////////////////////////////////////////////////////////////
WNDCLASS wc;
////////////////////////////////////////////////////////////////////
DWORD dwExStyle;
DWORD dwStyle;
////////////////////////////////////////////////////////////////////
RECT WindowRect;
static PIXELFORMATDESCRIPTOR pfd =
{
sizeof(PIXELFORMATDESCRIPTOR),
1,
PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL|PFD_DOUBLEBUFFER,
PFD_TYPE_RGBA,
16,
0,0,0,0,0,0,
0,
0,
0,
0,0,0,0,
16,
0,
0,
PFD_MAIN_PLANE,
0,
0,0,0
};
WindowRect.left=(long)0;
WindowRect.right=(long)width;
WindowRect.top=(long)0;
WindowRect.bottom=(long)height;
其他的不用改了,另外把程序写完吧 呵呵

#11


哦,原来是这样,我一直没注意到呢,谢谢了~