九、字体渲染
void glutBitmapCharacter(void* font, int character);
绘制一个图像字符
Font表示要使用的图像字体,如下表所示:
GLUT_BITMAP_8_BY_13 | 一种固定宽度字体,每个字符都放在一个8x13像素的矩形框内 | GLUT_BITMAP_9_BY_15 | 一种固定宽度字体,每个字符都放在一个9x15像素的矩形框内 | GLUT_BITMAP_TIMES_ROMAN_10 | 一种10点均匀间距的Times Roman字体 | GLUT_BITMAP_TIMES_ROMAN_24 | 一种24点均匀间距的Times Roman字体 | GLUT_BITMAP_HELVETICA_10 | 一种10点均匀间距的Helvetica字体 | GLUT_BITMAP_HELVETICA_12 | 一种12点均匀间距的Helvetica字体 | GLUT_BITMAP_HELVETICA_18 | 一种18点均匀间距的Helvetica字体 |
Character表示要绘制的字符
int glutBitmapWidth(GLUTbitmapFont font, int character);
返回一个图像字符的宽度
font是指定的图像字体,如下表所示:
GLUT_BITMAP_8_BY_13 | 一种固定宽度字体,每个字符都放在一个8x13像素的矩形框内 | GLUT_BITMAP_9_BY_15 | 一种固定宽度字体,每个字符都放在一个9x15像素的矩形框内 | GLUT_BITMAP_TIMES_ROMAN_10 | 一种10点均匀间距的Times Roman字体 | GLUT_BITMAP_TIMES_ROMAN_24 | 一种24点均匀间距的Times Roman字体 | GLUT_BITMAP_HELVETICA_10 | 一种10点均匀间距的Helvetica字体 | GLUT_BITMAP_HELVETICA_12 | 一种12点均匀间距的Helvetica字体 | GLUT_BITMAP_HELVETICA_18 | 一种18点均匀间距的Helvetica字体 |
character为指定的字符
返回指定字符的宽度,以像素为单位
void glutStrokeCharacter(void* font, int character);
绘制一个图形字符
Font表示要使用的图形字体,如下表所示:
GLUT_STROKE_ROMAN | 一种等间距的Roman Simplex字体,仅包括32到127的ASCII字符 | GLUT_STROKE_MONO_ROMAN | 一种单一间距的Roman Simplex字体,仅包括32到127的ASCII字符 |
Character为要绘制的字符
int glutStrokeWidth(GLUTstrokeFont font, int character);
返回一个图形字体的宽度
Font是指定的图形字体,如下表所示:
GLUT_STROKE_ROMAN | 一种等间距的Roman Simplex字体,仅包括32到127的ASCII字符 | GLUT_STROKE_MONO_ROMAN | 一种单一间距的Roman Simplex字体,仅包括32到127的ASCII字符 |
Character为绘制的字符
十、实体绘制 以下所有函数中,radius表示球体的半径,slices表示球体围绕z轴分割的数目,stacks表示球体沿着z轴分割的数目。
绘制中心在模型坐标原点,半径为radius的球体,球体围绕z轴分割slices次,球体沿着z轴分割stacks次
void glutWireSphere(GLdouble radius, GLint slices, GLint stacks); 线框球 void glutSolidSphere(GLdouble radius, GLint slices, GLint stacks); 实心球
void glutWireCube(GLdouble size); 线框立方体 void glutSolidCube(GLdouble size); 实心立方体
void glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint nsides, GLint rings); 线框圆环 void glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint nsides, GLint rings); 实心圆环
void glutWireIcosahedron(void); 线框20面体 void glutSolidIcosahedron(void); 实心20面体
void glutWireOctahedron(void); 线框8面体 void glutSolidOctahedron(void); 实心8面体
void glutWireTetrahedron(void); 线框4面体 void glutSolidTetrahedron(void); 实心4面体
void glutWireDodecahedron(GLdouble radius); 线框12面体 void glutSolidDodecahedron(GLdouble radius); 实心12面体
void glutWireCone(GLdouble radius, GLdouble height, GLint slices, GLint stacks); 线框圆锥体 void glutSolidCone(GLdouble radius, GLdouble height, GLint slices, GLint stacks); 实心圆锥体
void glutWireTeapot(GLdouble size); 线框茶壶 void glutSolidTeapot(GLdouble size); 实心茶壶
十一、实例
初始化及简单平面图形
#include <GL/glut.h>
void renderScene(void) {
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glVertex3f(-0.5,-0.5,0.0);
glVertex3f(0.5,0.0,0.0);
glVertex3f(0.0,0.5,0.0);
glEnd();
glFlush();
}
int main(int argc, char **argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_SINGLE | GLUT_RGBA);
glutInitWindowPosition(100,100);
glutInitWindowSize(320,320);
glutCreateWindow("3D Tech- GLUT Tutorial");
glutDisplayFunc(renderScene);
glutMainLoop();
return 0;
}
|