OpenGL初学,请问我这段代码有错吗?为什么在窗口显示不出来

#include
#include
#include
#include
#include

const GLint screenWidth = 640;
const GLint screenHeight = 480;

void myInit(void)
{
glClearColor(1.0, 1.0, 1.0, 0.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, (GLdouble)screenWidth, 0.0, (GLdouble)screenHeight);
}
void checkerboard(void)
{
for(GLint i = 0; i < 8; i++)
{
for(GLint j = 0; j < 8; j++)
{
if((i+j)%2 == 0)
{
glColor3f(0.0f, 0.0f, 0.0f);
}
else
{
glColor3f(1.0f, 1.0f, 1.0f);
}
glRecti(30*j, 30*i, 30*(j+1), 30*(i+1));
}
}
glFlush();
}

void myDisplay(void)
{
glClear(GL_COLOR_BUFFER_BIT);
checkerboard();
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(screenWidth, screenHeight);
glutInitWindowPosition(0, 0);
glutCreateWindow("chess");
glutDisplayFunc(myDisplay);

myInit();
glutMainLoop();

}

3个回答

没什么问题,可能你配置有问题吧。或者编译器不同。
我用的是VC2010+Win8.1+OpenGL1.4
你的程序不太友好,我加了按ESC退出。如下:

 #define GLUT_DISABLE_ATEXIT_HACK 
#include <GL/glut.h>


const GLint screenWidth = 640;
const GLint screenHeight = 480;
void myInit(void)
{
    glClearColor(1.0, 1.0, 1.0, 0.0);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(0.0, (GLdouble)screenWidth, 0.0, (GLdouble)screenHeight);
}
void checkerboard(void)
{
    for(GLint i = 0; i < 8; i++)
    {
        for(GLint j = 0; j < 8; j++)
        {
            if((i+j)%2 == 0)
            {
                glColor3f(0.0f, 0.0f, 0.0f);
            }
            else
            {
                glColor3f(1.0f, 1.0f, 1.0f);
            }
            glRecti(30*j, 30*i, 30*(j+1), 30*(i+1));
        }
    }
    glFlush();
}
void myDisplay(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    checkerboard();
}
void keyboard(unsigned char key, int x, int y)
{
    switch (key) {
    case 27:
        exit(0);
        break;
    }
}
int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowSize(screenWidth, screenHeight);
    glutInitWindowPosition(0, 0);
    glutCreateWindow("chess");
    glutDisplayFunc(myDisplay);
    myInit();
    glutKeyboardFunc(keyboard);
    glutMainLoop();
}

运行结果:
图片说明

OpenGL需要在IDE进行配置,配置好了吗?百度搜搜,很多介绍如何配置的。
先运行个测试程序。

qq_27183003
ysuwood 没什么错误,我这运行正常。黑白方格。
3 年多之前 回复
Changsheng_S
Changsheng_S 编译没有问题,环境已经配置好了。就是这段代码本身有什么错误吗?
3 年多之前 回复
Changsheng_S
Changsheng_S 编译没有问题,环境已经配置好了。就是这段代码本身有什么错误吗?
3 年多之前 回复

""glutDisplayFunc(myDisplay);""这段代码有错!传入的参数应该是&myDisplay而不是myDisplay.

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!