• opengl 学习第一日


    #include "stdafx.h"
    #include <windows.h>
    #include <GL/glu.h>
    #include <GL/gl.h>
    #include <GL/glut.h>
    #include <GL/glaux.h> 
    #include <gl\glut.h>
    #include <string> 
    using namespace std;
    //http://space.itpub.net/17267437/viewspace-545635
    //http://www.cnblogs.com/CodeBlove/articles/1669945.html
    
    /////////////////////////////////////init
    
    float x1 = 100;
    float y1 = 150;
    int size = 50;
    
    float setp = 1; 
    float ww,wh;
    
    void SetupRC()
    {
        glClearColor(0.0f,0.0f,1.0f,1.0f);
    }
    
    void RenderSence()
    {
        glClear(GL_COLOR_BUFFER_BIT);
            glColor3f(1.5,0.5,0.5);
            glRectf(x1,y1,x1+size,y1+size);
        glutSwapBuffers();
        //glFlush();
    }
    /*
    修剪视图两个重要方法
    glViewport
    glOrtho
    */
    void ChangeSize(int w , GLsizei h)
    {
        if(h==0)
        {
            h=1;
        }
        glViewport(0,0,w,h);        //窗口可视范围...
        glMatrixMode(GL_PROJECTION); //投射模式
        glLoadIdentity();            //观察。。。
    
        //char to int
        char t[20];
        itoa(w,t,10);
        //MessageBox(NULL,t,NULL,NULL);
    
        itoa(h,t,10);
        //MessageBox(NULL,t,NULL,NULL);
    
        /*
         下面这句很重要     //剪载视图
        */
        if(w<=h)    
            glOrtho(0,250,0,250,1,-1);
        else
            glOrtho(0,250,0,250,1,-1);
        // left,right,buttom,top,near,far
        /*
         left,right x 轴最少最大值
         然后到,y,z
        */
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
    }
    
    
    
    void eventKeys(unsigned char key,int x,int y)
    {
    
        switch(key)
        {
            case 'a':
                MessageBox(NULL,"a",NULL,NULL);
                break;
            case 'b':
                    MessageBox(NULL,"b",NULL,NULL);
                break;
            default:
                //char to string 
                string s=""; 
                s.insert(0,key);
                MessageBox(NULL,s.c_str(),NULL,NULL);
                break;
        }
    }
    void eventMouses(int e , int type,int x, inty)
    {

    switch (e)
    {
    case GLUT_LEFT_BUTTON:
    if(type==GLUT_DOWN)
    {
      MessageBox(NULL,"MOUSE DOWN",NULL,NULL);
    }
      break;
    }

    
    }
    void MyTimer(int v)
    {
        x1+=setp;
        y1+=setp;
        glutPostRedisplay(); //刷新 glutDisplayFunc
        glutTimerFunc(33,MyTimer,1);
    }
    int main(int argc, char* argv[])
    {
        //GLUT_SINGLE
        //GLUT_DOUBLE 双缓冲技术
        glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGB);
        
        glutCreateWindow("Simple");        //窗口名为
    
        glutDisplayFunc(RenderSence);    //绘制场景
        glutReshapeFunc(ChangeSize);    //监听窗口更改 size 事件
        glutTimerFunc(33,MyTimer,1);    //监听计时器
    
        glutKeyboardFunc(eventKeys);    //监听 keyboard 事件
        glutMouseFunc(eventMouses);        //监听 mouse 事件
        //glutWireCube(50);                //画一个 cube
         
        SetupRC();
        glutMainLoop();
        return 0;
    }
  • 相关阅读:
    设计工具
    makefile介绍1.0
    cpp命名空间
    第二课 生活智慧
    第一课 我想找到好工作,我想挣钱
    php CURL
    apache 改变文档根目录www的位置
    yii2 模块的创建及使用
    yii2 源码分析Action类分析 (六)
    yii2 源码分析 model类分析 (五)
  • 原文地址:https://www.cnblogs.com/solq/p/2476370.html
Copyright © 2020-2023  润新知