在「pudn.com
>
>
opengl
>
sky」中找來sky.h 和sky.cpp 這個叫天空球,或叫天空穹,頂的**
把它加到我們的場景中,為了匹配我們的程式,部分**需要修改.
修改後的sky.h:
// sky.h: csky 類介面.
// //
#if !defined(afx_sky_h__f6c8078a_2217_4f98_bd37_f5f00d2f3e16__included_)
#define afx_sky_h__f6c8078a_2217_4f98_bd37_f5f00d2f3e16__included_
#include#include#include#if _msc_ver > 1000
#pragma once
#endif // _msc_ver > 1000
class csky ;
#endif // !defined(afx_sky_h__f6c8078a_2217_4f98_bd37_f5f00d2f3e16__included_)
修改後的sky.cpp:
// sky.cpp: csky類的實現。
//
//
#include "sky.h"
//
// 建造/銷毀
//
csky::csky()
csky::~csky()
void csky::initsky(float skyx,float skyy,float skyz,float skyr,unsigned int texture)
void csky::showsky()
float csky::getskyr()
float csky::getskyx()
float csky::getskyy()
float csky::getskyz()
我們的主cpp也稍修改:
//49 天空頂 + 場景漫遊 + +
#include //1,主程式:
#include#include#include#include "motionmodel.h"
#include "camera.h"
#include "sky.h"
//#include "skybox.h"
/** 定義光源的屬性值 */
glfloat lightambient = ; /**< 環境光引數 */
glfloat lightdiffuse = ; /**< 漫射光引數 */
glfloat lightspecular = ; /**< 鏡面光引數 */
glfloat lightposition = ; /**< 光源位置 */
camera m_camera;
//cskybox m_skybox;
csky m_sky;
int buildtexture(char *szpathname, gluint &texid);
void init(void)
void display(void)
void changesize(int width, int height)
void motion(int x, int y)
void keyboard(unsigned char key, int x, int y)
glutpostredisplay();
printf("key::%d\n", key);
}void spindisplay()
int main(int argc, char** argv)
效果圖:
天空紋理圖:
3ds模型 光照開關選單
由於顯示效果不理想,現在來試試開啟 和關閉光照效果有什麼區別。加上選單 glutcreatemenu menuproc 選單 glutaddmenuentry 開啟光照 1 glutaddmenuentry 關閉光照 2 glutattachmenu glut right button 關連到右鍵 ...
匯入3ds模型的注意事項
今年年初的時候參加了imagine cup,發現那時候留下來的小模型真是好用。哪兒都能用,都不用重新做了 這次的動畫大作業我也打算把它們拿出來show一下,不用白不用。關於opengl匯入模型,雖說理論上來講什麼格式的模型都ok,只要你知道它們的儲存結構。但實際上現在用的最多最常見的還是匯入3ds格...
3DS檔案的結構
本文 於 zwqxin 其實按我最近的理解,3ds檔案格式,對資料的組織跟記憶體很相像。它分成很多的 chunk 塊 按順序排列。每個chunk都包含著一些資訊,比如頂點啊材質啊燈光啊等等,相應地,就被稱為頂點chunk材質chunk燈光chunk等等,每個chunk都有其功用。每個chunk有其i...