游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3278|回复: 3

为何glRectf(-25.0f,25.0f,25.0f,-25.0f);无法执行?

[复制链接]

13

主题

46

帖子

46

积分

注册会员

Rank: 2

积分
46
发表于 2007-8-5 11:48:00 | 显示全部楼层 |阅读模式
这是从"学OpenGL编游戏"里的代码片断,
这是原来的代码
void OpenGL::Render()
{
        glClearColor(0.0f,0.0f,1.0f,1.0f);
        glClear(GL_COLOR_BUFFER_BIT);
        glLoadIdentity();
        glFlush();
        SwapBuffers(hDC);
}

渲染后显示一个蓝色的背景图,
为了显示一个正方形修改代码如下

void OpenGL::Render()
{
        glClearColor(0.0f,0.0f,1.0f,1.0f);
        glClear(GL_COLOR_BUFFER_BIT);
        //Test.Begin
        glColor3f(1.0f,0.0f,0.0f);
        glRectf(-25.0f,25.0f,25.0f,-25.0f);
        //Test.End
        glLoadIdentity();
        glFlush();
        SwapBuffers(hDC);
}


但是运行后还是显示一个蓝色背景,
        //Test.Begin
        glColor3f(1.0f,0.0f,0.0f);
        glRectf(-25.0f,25.0f,25.0f,-25.0f);
        //Test.End

这两行似乎没有起作用?不知道为什么,



下边是它的
void GameLoop()
{
        MSG msg;
        bool fMessage;
        PeekMessage(&msg,NULL,0U,0U,PM_NOREMOVE);

        while(msg.message!=WM_QUIT)
        {
                fMessage=PeekMessage(&msg,NULL,0L,0L,PM_REMOVE);
                if(fMessage)
                {
                        TranslateMessage(&msg);
                        DispatchMessage(&msg);
                }
                else
                {
                        m_OpenGL->Render();
                }
        }
}







为什么会这样呢?

15

主题

202

帖子

207

积分

中级会员

Rank: 3Rank: 3

积分
207
QQ
发表于 2007-8-5 12:14:00 | 显示全部楼层

Re:为何glRectf(-25.0f,25.0f,25.0f,-25.0f);无法执行?

glRectf默认z轴为0,自然看不见.
另外"学OpenGL编游戏"这本书基本是骗钱的.

13

主题

46

帖子

46

积分

注册会员

Rank: 2

积分
46
 楼主| 发表于 2007-8-5 16:40:00 | 显示全部楼层

Re: Re:为何glRectf(-25.0f,25.0f,25.0f,-25.0f);无法执行?

Mao!: Re:为何glRectf(-25.0f,25.0f,25.0f,-25.0f);无法执行?

glRectf默认z轴为0,自然看不见.
另外"学OpenGL编游戏"这本书基本是骗钱的.



不会呀,只是在平面上画一个正方形呀,没有用3D哪,
我没买书,从网上下载的例子,我怀疑是不是画了之后又被渲染成蓝色覆盖了????

15

主题

202

帖子

207

积分

中级会员

Rank: 3Rank: 3

积分
207
QQ
发表于 2007-8-5 22:57:00 | 显示全部楼层

Re:为何glRectf(-25.0f,25.0f,25.0f,-25.0f);无法执行?

这不是用没用3D的问题.
OpenGL大部分是管线的.任何图元都表达在3D坐标上.会经过一系列矩阵变换得到屏幕2D表达.
你在glRectf(-25.0f,25.0f,25.0f,-25.0f);前加上glTranslatef(0.0f,0.0f,-6.0f)试试.
如果你设定的视平截体范围不是太变态的话,就可以看到正方形了.       
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-25 14:27

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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