利用3D绘图程序Pangolin显示文本信息
由于自己项目的需求,需要将一些文本信息在Pangolin的显示界面中进行显示。在查看了Pangolin源码后,以及博主liu_hang_0727
的帮助下实现了这一功能,希望能为大家提供一点思路。
demoShowText.cpp
#include <iostream>
#include <pangolin/pangolin.h>
using namespace std;
int main() {
//创建一个窗口,宽:640,高:480
pangolin::CreateWindowAndBind("PangolinShowText", 640, 480);
glEnable(GL_DEPTH_TEST);
//下面两行必须添加,否则显示的是一个个的像素块
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
pangolin::OpenGlRenderState s_cam(
pangolin::ProjectionMatrix(640, 480, 420, 420, 320, 320, 0.2, 100),
pangolin::ModelViewLookAt(-2, 2, -2, 0, 0, 0, pangolin::AxisY)
);
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::GlFont * text_font = new pangolin::GlFont("../JamrulNormal.ttf", 50.0);
// 显示文本信息
string text = "Hello,Pangolin!";
glColor3f(1.0,0.0,0.0);
text_font->Text(text.c_str()).Draw(3, 1, 1);
glColor3f(0.0,0.0,1.0);
text_font->Text("123456789").Draw(4, 1, 1);
glColor3f(0.0,1.0,0.0);
text_font->Text("00000000").Draw(5, 1, 1);
pangolin::FinishFrame();
}
return 0;
}
输出的结果: