Pangolin使用——基礎代碼

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();
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章