OpenGL step to step

Posted 什么刀枪棍棒,我都耍的不怎么样

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenGL step to step相关的知识,希望对你有一定的参考价值。

?这是一个类似于地球绕太阳旋转的demo

原有的例子是用键盘接受事件,我做了修改,使用了timer把他变成一个动态旋转的

#import <Foundation/Foundation.h>
#include <GLUT/GLUT.h>
static int year=0,day=0;
void init()
{
    glClearColor(0,0,0,0);
    glShadeModel(GL_FLAT);
}

void display()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1,1,1);
    glPushMatrix();
    glutWireSphere(1,20,16);
    glRotatef((GLfloat)year,0,1,0);
    glTranslated(2,0,0);
    
    glRotatef((GLfloat)day,0,1,0);
    glutWireSphere(0.2,10,8);
    glPopMatrix();
    glutSwapBuffers();
    
    }

void reshape(int w,int h)
{
    glViewport(0, 0, (GLsizei)w, (GLsizei)h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    
    gluPerspective(60,(GLfloat)w/(GLfloat)h,1,20);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    gluLookAt(0,0,5,0,0,0,0,1,0);
}

void fishboard()
{
    day=(day+10)%360;
    year=(year+5)%360;
    glutPostRedisplay();
}



void timerProc(int id)
{
    fishboard();
    glutTimerFunc(50,timerProc,1);//需要在函数中再调用一次,才能保证循环
}

int main(int argc,char **argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
    glutInitWindowSize(500, 500);
    glutInitWindowPosition(100,100);
    glutCreateWindow("Xcode Glut Demo");
    init();
    
    glutDisplayFunc(display);
    glutReshapeFunc(reshape);
    glutTimerFunc(50,timerProc,1);
    
    glutMainLoop();
    return 0;
}

 

以上是关于OpenGL step to step的主要内容,如果未能解决你的问题,请参考以下文章

初识OpenGL 片段着色器(Fragment Shader)

初识OpenGL 片段着色器(Fragment Shader)

IDEA单步断点调试Step Into/Step Out/Step Over/Run to Cursor

IDEA单步断点调试Step Into/Step Out/Step Over/Run to Cursor

step by step to OpenFOAM:step1

ESP32-FPV-Camera介绍和使用