实验室软件项目中需要绘制三维有限元网格图,需要使用openGL,使用OpenGL可以很方便的绘制三维模型,但在绘制坐标系轴的X Y Z字符时,我遇到了一些问题。
首先我想到了使用 Qt openGL 中自带的函数renderText():
glColor3f(1,0,0);
renderText(0,0,0,QString(“hello”));
但是这样产生的character都是“平面的”,不能随着空间坐标系进行旋转。不适合绘制坐标系轴的X Y Z字符。
于是通过网上查阅相关的资料,发现了另一中方法。就是将字符的图片导入Qt的QImage类的一个对象中,当然也可以通过QPaint直接绘制到一QImage对象中。然后在OpenGL中将QImage的对象转化为一texture,通过OpenGL中贴纹理的方式,将包含该字符的图片显示在OpenGL中。
1.在OpenGL的头文件中建立一整型的数组来存储texture。(具体怎样的机制不清楚)。这里数组长度为3,表示X Y Z 三个texture。GLuint 表示openGL 中的整型。
GLuint texture[3];
2.载入texture。 这里建立一函数来载入texture。 (OpenGL中相关的具体函数不清楚机制)。
void opengl::loadGLTextures()
{
QImage tex1,tex2,tex3,buf1,buf2,buf3;
buf1.load(“:/opengl_axis/resource/X.jpg”);
buf2.load(“:/opengl_axis/resource/Y.jpg”);
buf3.load(“:/opengl_axis/resource/Z.jpg”);
tex1=QGLWidget::convertToGLFormat(buf1);
tex2=QG