2016-10-20 3 views
-1

저는 OpenGL C++에서 원형 차트를 그린 후 초기화시 색상이 잘 보입니다. 그러나 색상을 rand()하기 위해 버튼을 누르면 파이 차트가 보이지 않게됩니다.OpenGL 원형 차트 색상 변경 오류가 발생했습니다.

Heres는 내 pieChart에 코드

void PieChart1(int x, int y, int radius) 
{ 
    //float i; 
    int triangleAmount = 100; //# of triangles used to draw circle 
    int startPos = 0; 
    int Pie1AnglePercentage[7]; 
    GLfloat twicePi = 2.0f * 3.14159; 
    float TotalPie1Banana = 0; 
    //TotalZoo1Banana = 0; 
    //int zoo1Data[7] = { 200, 300, 250, 275, 150, 310, 380 }; 
    //Zoo1PieData 

    GLfloat colorTable[7][3] = { { Pie12014R, Pie12014G, Pie12014B }, 
    { Pie12013R, Pie12013G, Pie12013B }, 
    { Pie12012R, Pie12012G, Pie12012B }, 
    { Pie12011R, Pie12011G, Pie12011B }, 
    { Pie12010R, Pie12010G, Pie12010B }, 
    { Pie12009R, Pie12009G, Pie12009B }, 
    { Pie12008R, Pie12008G, Pie12008B } }; 

    float Zoo1PieData[7] = { BananaDisplay2014,BananaDisplay2013,BananaDisplay2012, 
     BananaDisplay2011,BananaDisplay2010,BananaDisplay2009,BananaDisplay2008 }; 


    //PIE 1 ZOO 1 SUM BANANAS TOTAL 
    for(int i = 0; i < 7; ++i) 
     TotalPie1Banana += Zoo1PieData[i]; 

    //PIE 1 PERCENTAGE FOR EACH YEAR 
    for (int i = 0; i < 7; ++i) 
     Pie1AnglePercentage[i] = (Zoo1PieData[i]/TotalPie1Banana) * 100; 

    triangleAmount = 0; 
    for (int i = 0; i < 7; ++i) 
     triangleAmount += Pie1AnglePercentage[i]; 

    for (int i = 0; i < 7; ++i) 
    { 
     glBegin(GL_TRIANGLE_FAN); 
     glColor3f(colorTable[i][0], colorTable[i][1], colorTable[i][2]); 
     glVertex3f(x, y, 0); 

     for (int j = startPos; j <= startPos + Pie1AnglePercentage[i]; ++j) 
     { 
      float const t = (twicePi*(float)j/(float)triangleAmount) + 3.141592; 
      glVertex3f(x - sin(t) * radius, y + cos(t) * radius, 0); 
     } 
     startPos += Pie1AnglePercentage[i]; 

     glEnd(); 
    } 

는 위 내 파이 차트 코드입니다.

그리고 여기에 내가 C 키를 누를 때, 파이가 즉시 사라 왜 아무 생각이 내 경우 키 코드

case 'c': 
      Pie12014R = rand() % 255; 
      Pie12014G = rand() % 255; 
      Pie12014B = rand() % 255; 

      Pie12013R = rand() % 255; 
      Pie12013G = rand() % 255; 
      Pie12013B = rand() % 255; 

      Pie12012R = rand() % 255; 
      Pie12012G = rand() % 255; 
      Pie12012B = rand() % 255; 

      Pie12011R = rand() % 255; 
      Pie12011G = rand() % 255; 
      Pie12011B = rand() % 255; 

      Pie12010R = rand() % 255; 
      Pie12010G = rand() % 255; 
      Pie12010B = rand() % 255; 

      Pie12009R = rand() % 255; 
      Pie12009G = rand() % 255; 
      Pie12009B = rand() % 255; 

      Pie12008R = rand() % 255; 
      Pie12008G = rand() % 255; 
      Pie12008B = rand() % 255; 

입니다.

+0

초기 값은 무엇입니까? 정확히 무엇이 사라지는가? 'glColor3f'의 값은 [0, 1] 범위에 있어야하지만 [0, 255]에서 값을 생성하므로 모든 것이 흰색이됩니다. – BDL

답변

1

내 색상 값이 부호없는 바이트로 선언되었지만 파이 차트 색상이 glColor3ub 대신 glColor3f으로 설정되었습니다.