Pangolin使用——基礎代碼
#include<iostream>
#include<pangolin/pangolin.h>
int main(int argc,char **argv)
{
//新建一個窗口
pangolin::CreateWindowAndBind("Main",640,480);
//啓動深度測試
glEnable(GL_DEPTH_TEST);
//定義投影和初始模型視圖矩陣
pangolin::OpenGlRenderState s_cam(
pangolin::ProjectionMatrix(640,480,420,420,320,240,0.2,100),
//對應的是gluLookAt,攝像機位置,參考點位置,up vector(上向量)
pangolin::ModelViewLookAt(0,-10,0.1,0,0,0,pangolin::AxisNegY));
//在窗口中創建交互式視圖
pangolin::Handler3D handler(s_cam);
pangolin::View &d_cam = pangolin::CreateDisplay()
.SetBounds(0.0,1.0,0.0,1.0,-640.0f/480.0f)
.SetHandler(&handler);
while(!pangolin::ShouldQuit())
{
//清除屏幕並激活要渲染到的視圖
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
d_cam.Activate(s_cam);
pangolin::glDrawColouredCube();//畫三維方塊
pangolin::glDrawAxis(3);//三維座標軸,紅——x軸,綠——y軸,藍——z軸
//glBegin(形狀);
//glVertex(頂點1);
//glVertex(頂點2);
//……
//glEnd();
//結束
pangolin::FinishFrame();
}
}
形狀可以設爲:
GL_POINTS:點
GL_LINES:線
GL_LINE_STRIP:折線
GL_LINE_LOOP:封閉折線
GL_TRIANGLES:三角形
GL_POLYGON:多邊形
glBegin()和glEnd()之間可以調用的函數有:
glVertex()設置頂點座標
glColor()設置當前顏色
glIndex()設置當前顏色表
glNormal()設置法向座標
glEvalCoord()產生座標
glCallList(),glCallLists()執行顯示列表
glTexCoord()設置紋理座標
glEdgeFlag()控制邊界繪製
glMaterial()設置材質
例如:
glBegin(GL_POINTS);
glColor3f(1.0,1.0,1.0);
glVertex3f(0.0f,0.0f,0.0f);
glVertex3f(1,0,0);
glVertex3f(0,2,0);
glEnd();
例如:
//新建一個窗口
pangolin::CreateWindowAndBind("Main",640,480);
//啓動深度測試
glEnable(GL_DEPTH_TEST);
//定義投影和初始模型視圖矩陣
pangolin::OpenGlRenderState s_cam(
pangolin::ProjectionMatrix(640,480,420,420,320,240,0.2,100),
//對應的是gluLookAt,攝像機位置,參考點位置,up vector(上向量)
pangolin::ModelViewLookAt(0,-10,0.1,0,0,0,pangolin::AxisNegY));
//在窗口中創建交互式視圖
pangolin::Handler3D handler(s_cam);
pangolin::View &d_cam = pangolin::CreateDisplay()
.SetBounds(0.0,1.0,0.0,1.0,-640.0f/480.0f)
.SetHandler(&handler);
while(!pangolin::ShouldQuit())
{
//清除屏幕並激活要渲染到的視圖
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
d_cam.Activate(s_cam);
pangolin::glDrawColouredCube();//畫三維方塊
pangolin::glDrawAxis(2);//三維座標軸,紅——x軸,綠——y軸,藍——z軸
glBegin(GL_LINE_STRIP);
for (i = 0; i < map_des1.size() ; ++i) {
glVertex3d(map_des1[i][0],map_des1[i][1],0);
}
glEnd();
glPointSize(6);
glBegin(GL_LINE_STRIP);
glColor3f(0.0f, 1.0f, 0.0f);
for (i = 0; i < map_des2.size() ; ++i) {
glVertex3d(map_des2[i][0],map_des2[i][1],2);
}
glEnd();
glPointSize(3);
glBegin(GL_LINE_STRIP);
glColor3f(1.0f, 0.0f, 0.0f);
for (i = 0; i < map_des3.size() ; ++i) {
glVertex3d(map_des3[i][0],map_des3[i][1],4);
}
glEnd();
//結束
pangolin::FinishFrame();
}