glColor не работает, появляется случайный цвет - PullRequest
0 голосов
/ 21 ноября 2011

Что-то не так в моем коде где-то, но для любого количества примитивов, которые я рисую, несмотря на вызов glClearColor и затем выбор цвета с помощью glColor3f, цвета, которые появляются, абсолютно случайны ...

Так что в моемРендеринг класса I проходит по всем объектам и вызывает их методы рисования, для примитивов они будут выглядеть так:

inline void PrimitiveDrawer::drawWireframePrism(Vector3 pos, float radius, Vector3 col){

    glClearColor( 1.0f, 1.0f, 1.0f, 1.0f );
    glColor3f(col.x, col.y, col.z);

    glLineWidth(3);
    glBegin (GL_LINE_LOOP); 
        ...
glEnd()

Но независимо от того, какой цвет я выберу, я всегда получаю разные ... Интересно, чтовсе примитивные линии, которые я рисую этим методом, принимают цвет моделей, которые они связывают (они предназначены для ограничения объемов для ячеек) ... Может ли это быть связано с используемыми мной загрузчиками моделей?

Это влияет на каждую фигуру (за исключением тех, которые находятся вокруг моделей), где каждый GL_LINE принимает тот же цвет (зеленый по некоторым причинам), включая glutBitMapCharacter, который я пытаюсь нарисовать ... Это основная мысль, которая беспокоит меня, когда я 'Я хотел бы выбрать цвет для рисования текста, в настоящее время я делаю:

void renderBitmapString(float x, float y, void *font,char *string)
{

  char *c;
  glRasterPos2f(x, y);
  for (c=string; *c != '\0'; c++) {
    glutBitmapCharacter(font, *c);
  }
}

void drawText(char text[20], float x, float y){
    glPushMatrix();
    setOrthographicProjection();
    glLoadIdentity();
    glClearColor( 0, 0, 0, 0 );
    glColor4f(0, 0, 1, 1);
    renderBitmapString(x, y,(void *)font, text);
    resetPerspectiveProjection();
    glPopMatrix();
}

Но текст появляется вместо зеленого вместо зеленого?

1 Ответ

6 голосов
/ 21 ноября 2011

glClearColor не имеет ничего общего с glColor. glClearColor устанавливает цвет, используемый при вызове glClear(GL_COLOR_BUFFER_BIT) для очистки кадрового буфера с помощью.

Цвета от других нарисованных объектов звучат для меня, что вы забыли отключить текстурирование. Добавьте glDiable(GL_TEXTURE_2D); после того, как вы закончите рисовать текстурированный материал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...