游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1162|回复: 0

图象的中心对齐问题

[复制链接]

5

主题

13

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2006-2-18 14:20:00 | 显示全部楼层 |阅读模式
源代码如下:

#include <windows.h>
#include <gl/gl.h>
#include <gl/glu.h>
#include <gl/glaux.h>


void CALLBACK mydisplay(void);
void CALLBACK myReshape(GLsizei w,GLsizei h);

void main(void)
{
        auxInitDisplayMode(AUX_SINGLE|AUX_RGBA);
        auxInitPosition(0,0,500,500);
        auxInitWindow("my program");

        glClearColor(0.0,0.0,0.0,0.0);
        glClear(GL_COLOR_BUFFER_BIT);

        glLoadIdentity();
        glTranslatef (57.5, 35.0, 0.0);

        auxReshapeFunc(myReshape);
        auxMainLoop(mydisplay);

}


void CALLBACK mydisplay(void)
{

        glColor3f(1.0,1.0,0.0);

        //draw head
        glBegin(GL_POLYGON);
        glVertex2f(55.0,60.0);
        glVertex2f(60.0,60.0);
        glVertex2f(60.0,55.0);
        glVertex2f(55.0,55.0);
        glEnd();

        //draw body
        glBegin(GL_POLYGON);
        glVertex2f(50.0,53.0);
        glVertex2f(65.0,53.0);
        glVertex2f(65.0,33.0);
        glVertex2f(50.0,33.0);
        glEnd();


        //draw left hand
        glBegin(GL_POLYGON);
        glVertex2f(43.0,52.0);
        glVertex2f(48.0,52.0);
        glVertex2f(48.0,35.0);
        glVertex2f(43.0,35.0);
        glEnd();


        //draw right hand
        glBegin(GL_POLYGON);
        glVertex2f(67.0,52.0);
        glVertex2f(72.0,52.0);
        glVertex2f(72.0,35.0);
        glVertex2f(67.0,35.0);
        glEnd();


        //draw left leg
        glBegin(GL_POLYGON);
        glVertex2f(50.0,31.0);
        glVertex2f(56.5,31.0);
        glVertex2f(56.5,11.0);
        glVertex2f(50.0,11.0);
        glEnd();


        //draw right leg
        glBegin(GL_POLYGON);
        glVertex2f(58.5,31.0);
        glVertex2f(65.0,31.0);
        glVertex2f(65.0,11.0);
        glVertex2f(58.5,11.0);
        glEnd();

        glFlush();
}


void CALLBACK myReshape(GLsizei w,GLsizei h)
{
        glViewport(0,0,w,h);
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();

        if(w<=h)
                glOrtho(30.0,85.0,0*(GLfloat)h/(GLfloat)w,
                 70.0*(GLfloat)h/(GLfloat)w,-10.0,10.0);
    else
                glOrtho(30.0*(GLfloat)w/(GLfloat)h,
                 85.0*(GLfloat)w/(GLfloat)h,0.0,70.0,-10.0,10.0);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}

调整窗口的时候,所画图象会跑到窗口外,
是不是所画图象都要以原点(0,0)为中心,才能保证所画图象定中窗口中间.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-23 11:48

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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