如何用 opengl在窗体的(x,y)处画一个8X8 的矩形

mjohhh 2003-09-11 10:13:08
如何用 opengl在窗体的(x,y)处画一个8X8 的矩形
...全文
91 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
kyanitelj 2003-09-18
  • 打赏
  • 举报
回复
去看一下NEHE的教程啊,第二课就是教你怎么画矩形的
autoegg 2003-09-12
  • 打赏
  • 举报
回复
opengl是一个3D图形工具,你的提法就不妥,必须根据三维坐标(而不是二维坐标)来确定某一个图形。
当然也有3维和2维的映射关系,但是这牵涉到投影矩阵等问题,不是仅仅由2维坐标决定的。
seadreamer 2003-09-12
  • 打赏
  • 举报
回复
同意autoegg(dandan)的意见,下面给出了实现的一个简单程序,可以再vc6.0下编译试试。注意在project/settings/link中加入三个库文件:opengl32.lib,glu32.lib,glaux.lib.

  #include "glos.h"
  #include<GL/gl.h>
  #include<GL/glaux.h>

  void myinit(void);
  void DrawMyObjects(void);
  void CALLBACK myReshape(GLsizei w,GLsizei h);
  void CALLBACK display(void);

  void myinit(void)
  {
    glClearColor(0.0,0.0,0.0,0.0);
    glClear(GL_COLOR_BUFFER_BIT);
    glShadeModel(GL_FLAT);
  }

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

    if(w<=h)
      glOrtho(-20.0,20.0,-20.0*(GLfloat)h/(GLfloat)w, 20.0*(GLfloat)h/(GLfloat)w,-50.0,50.0);
    else
      glOrtho(-20.0*(GLfloat)h/(GLfloat)w, 20.0*(GLfloat)h/(GLfloat)w,-20.0,20.0,-50.0,50.0);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
  }

  void CALLBACK display(void)
  {
    glColor3f(1.0,1.0,0.0);
    DrawMyObjects();
    glFlush();
  }

 void DrawMyObjects(void)
  {
    
    glBegin(GL_POLYGON);
      glColor3f(0.5,0.3,0.7);
      glVertex2f(-1.0,1.0);
      glVertex2f(-1.0,1.0);
      glVertex2f(1.0,-1.0);
      glVertex2f(1.0,1.0);
    glEnd();
}


  void main(void)
  {
    auxInitDisplayMode(AUX_SINGLE|AUX_RGBA);
    auxInitPosition(0,0,500,500);
    auxInitWindow("Geometric Primitive Types");
    myinit();
    auxReshapeFunc(myReshape);
    auxMainLoop(display);
  }

  

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧