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);
     
    }
  • 相关阅读:
    React创建组件的方式
    react jsx语法
    mui区域滚动失效的问题
    css3 currentColor
    http协议
    iframe用法
    html关于强制显示、隐藏浏览器的滚动条
    null与undefind的区别(转)
    如何实现背景透明,文字不透明,兼容所有浏览器?
    事件委托
  • 原文地址:https://www.cnblogs.com/shaoguangleo/p/2805977.html
Copyright © 2011-2022 走看看