游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3564|回复: 4

[求助]最简单的OpenGL程序, 重画后图形消失

[复制链接]

10

主题

54

帖子

54

积分

注册会员

Rank: 2

积分
54
发表于 2007-8-29 22:08:00 | 显示全部楼层 |阅读模式
Win32程序, 在窗口里画一个红色的三角形, 使用默认的消息循环, 在响应WM_PAINT程序段里重画.

视点与投影都没改过, 但只要执行窗口重画图形就消失, 只剩下背景颜色.

郁闷死了! 各位帮帮忙吧!

先谢过了!

10

主题

54

帖子

54

积分

注册会员

Rank: 2

积分
54
 楼主| 发表于 2007-8-29 22:10:00 | 显示全部楼层

Re:[求助]最简单的OpenGL程序, 重画后图形消失

下面部分代码:

显示:
void glDisplay()
{
    glClear(GL_COLOR_BUFFER_BIT);

    gluLookAt(0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);

    glColor3f(1.0, 0.0, 0.0);
    glBegin(GL_TRIANGLES);
    glVertex3f(1.0, -1.0, 0.0);
    glVertex3f(0.0, 1.0, 0.0);
    glVertex3f(-1.0, -1.0, 0.0);
    glEnd();

    glFlush();

    return;
}

缩放:
void glReshape(WORD w, WORD h)
{
    glViewport(0, 0, w, h);

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();

    gluPerspective(60, GLfloat(w)/(GLfloat)h, 0.1, 2.0);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();

    return;
}

消息循环:
while (GetMessage(&msg, NULL, 0, 0))
{
    if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
}

消息处理:
case WM_SIZE:
    glReshape(LOWORD(lParam), HIWORD(lParam));
    break;
case WM_PAINT:
    hdc = BeginPaint(hWnd, &ps);

    // TODO: Add any drawing code here...
    glDisplay();
    EndPaint(hWnd, &ps);
    break;

18

主题

971

帖子

982

积分

高级会员

Rank: 4

积分
982
发表于 2007-8-30 09:15:00 | 显示全部楼层

Re:[求助]最简单的OpenGL程序, 重画后图形消失

看nehe的教程,

1

主题

9

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2007-8-31 09:46:00 | 显示全部楼层

Re: [求助]最简单的OpenGL程序, 重画后图形消失

void glDisplay() 开头加glLoadIdentity();

10

主题

54

帖子

54

积分

注册会员

Rank: 2

积分
54
 楼主| 发表于 2007-8-31 12:12:00 | 显示全部楼层

Re:[求助]最简单的OpenGL程序, 重画后图形消失

解决了. 就是因为没有glLoadIdentity()的原因.

谢谢!

Nehe的教程, 前两天想看来着(周炜翻的那个版本), 谁知道用vc2005一编译, 出了很多错误.

过几天装上vc2003再继续, 现在看红皮书呢.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 02:48

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表