2012-01-04 2 views
0

스케일을 디자인하고 있습니다. 그 안에는 숫자가 흰색으로 표시되어야합니다. 현재 아래 코드에서 "825"만 표시하려고합니다. 그 후 저울의 배경을 가진 회색 색상의 직사각형 상자를 그려 봅니다. 내가 실행하려고 할 때, 나는 볼 수 없습니다 (아래의 예에서, "825) 수를 확인 해달라고 만 회색 사각형 볼 수OpenGL : 직사각형을 그리면 텍스트가 표시되지 않습니다.

#define SPD_SCALE_TAPE_STATIC_LINE_COLOR_160  160  // Light GRAY 
#define SPD_SCALE_TAPE_STATIC_LINE_COLOR_120  120  // Light GRAY 
#define SPD_SCALE_TAPE_STATIC_LINE_COLOR_180  180  // Light GRAY 
#define SPD_SCALE_TAPE_STATIC_LINE_COLOR_050  50  // Light GRAY 

// Co-ordinates for GRAY box 
#define SPD_SCALE_TAPE_GRAY_X1 -8.0 
#define SPD_SCALE_TAPE_GRAY_Y1 0.5 
#define SPD_SCALE_TAPE_GRAY_X2 -6.0 
#define SPD_SCALE_TAPE_GRAY_Y2 6.3 

// Method to draw the text with TIMES NEW ROMAN with FONT size = 24 
void drawText_TIMES_24(float x, float y, float z, char* text) 
{ 

    int i_len = 0; 

    i_len = strlen(text); 

    if(i_len > 0) 
    { 
     glPushMatrix(); 
     glRasterPos3f(x,y,z); 

     while(*text != '\0') 
     { 
     if(i_len == 2) 
     { 
      glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24, ' '); 
      i_len = 0; 
     } 
     else 
     { 
      glutBitmapCharacter(GLUT_BITMAP_TIMES_ROMAN_24, *text); 
      text = text+1; 
     } 
     } 
     glPopMatrix(); 
    } 
} 


void drawAir_Speed_ReadOut_Val(void) 
{ 
    char a[] = "825"; 
    glColor3ub(0, 255, 0); 

    drawText_TIMES_24(-7.5, 3.0, 0.0, a); 

} 

// Method to draw Spd Scale Tape Gray Rect 
void drawSpd_Scale_Tape_Gray_Rect(void) 
{ 
    glColor3ub(SPD_SCALE_TAPE_STATIC_LINE_COLOR_050,  SPD_SCALE_TAPE_STATIC_LINE_COLOR_050, SPD_SCALE_TAPE_STATIC_LINE_COLOR_050); 

// Draw TOP rectangle GRAY box 
    glRectf(SPD_SCALE_TAPE_GRAY_X1, SPD_SCALE_TAPE_GRAY_Y1, SPD_SCALE_TAPE_GRAY_X2, SPD_SCALE_TAPE_GRAY_Y2); 

// Draw BOTTOM rectangle GRAY box 
glRectf(-6.0, -0.5, -8.0, -6.3); 

// Draw TOP triangle GRAY box 
drawTriangle (-6.5, 0.5, -6.0, 0.0, -6.0, 0.5); 

// Draw BOTTOM triangle GRAY box 
drawTriangle (-6.5, -0.5, -6.0, 0.0, -6.0, -0.5); 

} 

void draw(void) 
{ 
    drawAir_Speed_ReadOut_Val(); 
    drawSpd_Scale_Tape_Gray_Rect(); 
} 
+0

회색 직사각형이 텍스트를 덮어 쓰는 경우 일 수 있습니다. 당신은 어떤 텍스트라도 보았습니까? 그렇다면 통화 순서를 바꿉니다. –

+0

@Ville 주석 처리하고 확인했습니다. 텍스트가 표시됩니다.하지만 회색 배경이 필요합니다. –

+0

회색 사각형 뒤에 텍스트를 그립니다. 어쩌면 glDisable (GL_DEPTH_TEST)입니까? –

답변

0

그냥 추측 -.. 첫 번째 전에 glRasterPos3f()를 호출 drawText_TIMES_24() 내부의 glPushMatrix()? 추가 glRasterPos3f()를 사용하는 대신 glTranslatef()를 호출하는 것이 좋습니다.

+0

glPushMatrix(); glRasterPos3f (x, y, z); drawText_TIMES_24() 메서드에서 호출하는 방법입니다. –

+0

drawText_TIMES_24()에서 을 호출합니다. glPushMatrix(); glRasterPos3f (x, y, z); –

관련 문제