91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 4KB
    文件類型: .cpp
    金幣: 1
    下載: 0 次
    發布日期: 2021-05-29
  • 語言: C/C++
  • 標簽: opengl??

資源簡介

opengl繪制兩個行星以及一個恒星,利用鍵盤和鼠標來進行互動,入門級的代碼。

資源截圖

代碼片段和文件信息

#include???
#include
#include
#include
#include???

static?int?year?=?0?day?=?0?time?=?0?day2?=?0?year2?=?0?time2?=?0;
/*
初始化操作
*/
void?init()?{
//設置清屏色??
glClearColor(0.0f?0.0f?0.0f?0.0f);
//設置著色模式,填充色與頂點一致??
glShadeModel(GL_FLAT);
}

void?sun()?{

glColor3f(1.0?1.0?0.0);

//復制當前矩陣并保存到棧頂??
glPushMatrix();
glRotatef((GLfloat)time?0.0f?1.0f?0.0f);
//渲染一個太陽,半徑1.0f??
glutWireSphere(1.0f?20.0f?16.0f);
glPopMatrix();
}

void?planet1()?{
glColor3f(0.0?0.5?1.0);
glPushMatrix();
//繞y軸旋轉year度,此時地球的局部坐標系統與全局坐標系統不一致,表現出公轉??
glRotatef((GLfloat)year?0.0f?1.0f?0.0f);
//沿x軸方向移動2個單位長度,此時地球的局部坐標系統已經與全局的坐標系統偏移??
glTranslatef(2.0f?0.0f?0.0f);
//沿y軸旋轉day度,此時地球的局部坐標系統與全局坐標系統一致,表現出自轉??
glRotatef((GLfloat)day?0.0f?1.0f?0.0f);
glutWireSphere(0.2f?10.0f?8.0f);
//彈出棧頂矩陣??
glPopMatrix();
}

void?planet2()?{
glColor3f(1.0?0.5?1.0);
glPushMatrix();
glRotatef((GLfloat)year2?0.0f?1.0f?0.0f);

glTranslatef(4.0f?0.0f?0.0f);

glRotatef((GLfloat)day2?0.0f?1.0f?0.0f);

//繪制第二個地球,半徑0.2f??
glutWireSphere(0.2f?10.0f?8.0f);
glPopMatrix();
}

/*
展示繪制效果
*/
void?display()?{

//清理顏色緩沖區??
glClear(GL_COLOR_BUFFER_BIT);
//設置繪制顏色??

sun();
planet1();
planet2();


//彈出棧頂矩陣??
glPopMatrix();

//交換緩沖區數據??
glutSwapBuffers();

//強制完成繪制指令??
glFlush();
}//第一個行星和恒星

?/*
?調整窗口尺寸
?*/
void?reshape(int?width?int?height)?{
//設置視口矩形區域,在默認情況下,視口被設置為占據打開窗口的整個像素矩形??
//glViewport(0?0?(GLsizei)width?(GLsizei)height);
//之后的矩陣操作定義為投影矩陣操作??
glMatrixMode(GL_PROJECTION);
//等于是將之前矩陣變換導致變化過的棧頂矩陣重新歸位,置為單位矩陣!等于是之前的矩陣變換帶來的影響到此為止了!??
glLoadIdentity();

//創建一個表示對稱透視視圖平截頭體的矩陣??
//設置眼睛睜開的角度,視景體的寬高比,近截面的距離,遠截面的距離??
gluPerspective(60.0f?(GLfloat)width?/?(GLfloat)height?1.0f?20.0f);

//之后的矩陣操作定義為模型視圖矩陣操作??
glMatrix

評論

共有 條評論