zoukankan      html  css  js  c++  java
  • 用OpenGL绘制图形

    用OpenGL绘制图形

    结果

    clip_image002

    代码
    /*
    * File: main.c
    * Author: leo
    *
    * Drawing a simple 3D rectangle program with GLUT
    * OpenGL ~~
    */
     
    #include <stdio.h>
     
    #include <stdlib.h>
     
    #include <GL/gl.h>
     
    #include <GL/glu.h>
     
    #include <GL/glut.h>
     
    //called to draw scene
     
    void RenderScene(void)
     
    {
     
    //clear the window with current clearing color
     
    glClear(GL_COLOR_BUFFER_BIT);
     
    //set current drawing color to read
     
    glColor3f(1.0f,0.0f,0.0f); //设置以后绘制操作所用的颜色
     
    //draw a filled rectangle with current color
     
    glRectf(100.f,150.0f,150.0f,100.0f); //绘制一个填充的矩形
     
    //flush drawing commands
     
    glFlush();
     
    }
     
    //set up the rendering state
     
    void SetupRC(void)
     
    {
     
    glClearColor(0.0f,0.0f,1.0f,1.0f);
     
    }
     
    //called by GLUT library when the window has changed size
     
    void ChangeSize(GLsizei w, GLsizei h)
     
    {
     
    //prevent a divide by zero
     
    if(h == 0)
     
    h = 1;
     
    //set viewport to window dimensions
     
    glViewport(0,0,w,h);
     
    //reset coordinate system
     
    glMatrixMode(GL_PROJECTION);
     
    glLoadIdentity();//在每次进行任何矩阵处理之前都“复位”坐标系
     
    //establish clipping volumn(left,right,bottom,top,near,far)
     
    if(w <= h)
     
    glOrtho(0.0f,250.0f,0.0f,250.0f*h/w,1.0,-1.0);
     
    else
     
    glOrtho(0.0f,250.0f*w/h,0.0f,250.0f,1.0,-1.0);
     
    glMatrixMode(GL_MODELVIEW);
     
    glLoadIdentity();
     
    }
     
    int main(int argc, char** argv) {
     
    glutInit(&argc,argv);
     
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
     
    glutCreateWindow("Plot Rect. using GLUT");
     
    glutDisplayFunc(RenderScene);
     
    glutReshapeFunc(ChangeSize);//窗口大小发生变化,就重新设置坐标系
     
    SetupRC();
     
    glutMainLoop();
     
    return (EXIT_SUCCESS);
     
    }
  • 相关阅读:
    @Transactional 什么情况下会失效?
    如何主持一场专业的面试?
    MIT-HIB 心率数据库及相关
    hadoop中Writable类
    XXX.jar has no source attachment
    Win10Eclipse配置个人本地hadoop
    js去除两个数组中重复的元素
    JS找出两个数组中不相同的元素
    flex中order控制元素的排列顺序
    flex中align-self设置侧轴的某元素的对其方式
  • 原文地址:https://www.cnblogs.com/shaoguangleo/p/2805977.html
Copyright © 2011-2022 走看看