直接用画线就可以实现了,仅仅是画线的区域比较大就行了~~~
下面的代码可以参考一下:#define MAX_COORD 30void CEulerView::RenderCoordinate(int iLen)
{
int i;
GLfloat x_ambient[] = { 1.0, 0.0, 0.0}, 
y_ambient[] = { 0.0, 1.0, 0.0}, 
z_ambient[] = { 0.0, 0.0, 1.0},
axis_ambient[] = { 0.5, 0.5, 0.5},
other_ambient[] = { 0.1, 0.1, 0.1}; glLineWidth(1.0);
glBegin(GL_LINES);
for(i = -MAX_COORD;i <= MAX_COORD;i = i + iLen)
{
if(i == 0)
{
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, x_ambient); // X--Red
glVertex3i(0, 0, 0);  
glVertex3i(MAX_COORD, 0, 0); 
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, y_ambient); // Y--Green
glVertex3i(0, 0, 0);
glVertex3i(0, MAX_COORD, 0);
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, z_ambient); // Z--Blue
glVertex3i(0, 0, 0);
glVertex3i(0, 0, MAX_COORD); glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, axis_ambient);
glVertex3i(0, 0, 0); // -X
glVertex3i(-MAX_COORD, 0, 0);
glVertex3i(0, 0, 0); // -Y
glVertex3i(0, -MAX_COORD, 0);
glVertex3i(0, 0, 0); // -Z
glVertex3i(0, 0, -MAX_COORD);
}
else
{
glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, other_ambient);
glVertex3i(MAX_COORD, 0, i);
glVertex3i(-MAX_COORD, 0, i);
glVertex3i(i, 0, MAX_COORD);
glVertex3i(i, 0, -MAX_COORD); glVertex3i(MAX_COORD, i, 0);
glVertex3i(-MAX_COORD, i, 0);
glVertex3i(i, MAX_COORD, 0);
glVertex3i(i, -MAX_COORD, 0);
}
}
glEnd();
}