掌握opengl中顯示列表物件的使用方法。
github位址
#include "stdafx.h
"#include
#include
#include
#include
#include
//色彩全域性常量
glfloat white = ; //
白色glfloat red = ; //
紅色glfloat green = ; //
綠色glfloat magenta = ; //
洋紅//
攝像機類:水平移動半徑為10,按上下鍵則垂直移動
class
camera
//類方法
double getx()
double gety()
double getz()
void moveright()
void moveleft()
void moveup()
void movedown()
};//
球類定義
//半徑、顏色、最大高度
//x和z固定
//用lame bouncing algorithm
//每幀上下移動0.05單位
class
ball
//更新和繪製方法
void
update()
else
if (y
glpushmatrix();
//單獨設定每個球的材質引數
glmaterialfv(gl_front, gl_ambient_and_diffuse, color);
gltranslated(x, y, z);
//建立球
glutsolidsphere(radius, 30, 30
); glpopmatrix();
}};//
棋盤格:沿x和z平面分布
//點光源位置設定為(4, 3, 7).
class
checkerboard
//中心x
double centerx()
//中心y
double centerz()
//建立方法
void
create() ;
//設定光源位置
gllightfv(gl_light0, gl_position, lightposition);
//開始繪製四邊形
glbegin(gl_quads);
//法向量方向
glnormal3d(0, 1, 0
);
for (int x = 0; x < width - 1; x++)
}glend();
glendlist();
}//按列表編號繪製棋盤格
void
draw()
};//
全域性變數:棋盤格、相機和3個球的陣列
checkerboard checkerboard(8, 8
);camera camera;
//建立3個小球的陣列
ball balls =;
//自定義初始化方法
void
init()
//自定義繪製函式
//通過類繪製各物件,display函式**得以簡化
void
display()
//glflush();
glutswapbuffers();}//
視窗調整大小時呼叫的函式
void
reshape(glint w, glint h)
//自定義計時器函式
void timer(int
v) //
鍵盤處理函式
用OpenGL實現射線揀取物件
本文 http bbs.gameres.com showthread.asp?postid 100771 關於用射線原理來揀取物件網上已經有完整的理論,另外directx也提供了乙個pick例子來演示,在這裡我將這些資料和理論來稍微的總結,並給出opengl下的完整實現。相關的理論大體來自一篇英文資...
有趣的跳躍(用檔案操作)
問題描述 乙個長度為 n n 0 的序列中存在 有趣的跳躍 當且僅當相鄰元素的差的絕對值經過排 序後正好是從 1 到 n 1 例如 1 4 2 3 存在 有趣的跳躍 因為差的絕對值分別為 3,2,1。當然,任何只包含單個元素的序列一定存在 有趣的跳躍 你需要寫乙個程式判定給定序列是 否存在 有趣的跳...
跳躍遊戲的python實現
給定乙個非負整數列表,假定你的初始位置為列表第乙個下標。列表中的每個元素代表你在那個位置能夠跳躍的最大長度。請確認你是否能夠跳躍到列表的最後乙個下標。例如 輸入 a 2,3,1,1,4 輸出 true 輸入 a 3,2,1,0,4 輸出 false 採用貪心演算法方式,主要思想就是從列表中的第乙個元...