2013-02-25 3 views
0

Итак, я новичок в OpenGL и пытаюсь создать 2D-многопользовательскую игру, я знаю, как делать все сетевые работы, хотя графическая часть честно пинает мою задницу.Текстовое поле с использованием OpenGL

Я пробовал смотреть на NiftyGUI, а также на TWL, так как им было рекомендовано много, хотя я не могу понять их, поскольку не так много обучающих программ и нет видеороликов, которые помогут объяснить, что происходит не говоря уже о том, что документальная страница OpenGL просто ужасно изложена.

Я прорисовал черный прямоугольник, который я собираюсь сделать и как-то очертить в белом виде и сделать это временным текстовым полем, нарисуя на нем белый шрифт, хотя я даже не знаю, как рисовать шрифт , Это всего лишь некоторые из тех вещей, с которыми я борюсь, что я не могу найти, и я знаю, что мне придется использовать некоторые библиотеки, поэтому я назову те, которые я реализовал в настоящее время.

  • LWJGL
  • Slick2D

У меня нет никаких других в настоящее время, кроме того, для TWL, но я не могу понять, как использовать его для жизни меня.

Вот код, который я сделал сам, пытаясь получить маленький черный прямоугольник Собирается

void drawTextBox(int fromLeft, int fromTop, int width, int height) { 
    glColor3f(1.0f, 1.0f, 1.0f); 
    glBegin(GL_QUADS); 
     glTexCoord2f(0, 0); 
     glVertex2i(fromLeft, fromTop); // Upper Left 
     glTexCoord2f(1, 0); 
     glVertex2i(fromLeft - width, fromTop); // Uppright 
     glTexCoord2f(1, 1); 
     glVertex2i(fromLeft - width, fromTop + height); // Bottom right 
     glTexCoord2f(0, 1); 
     glVertex2i(fromLeft, fromTop + height); // bottom left 
    glEnd(); 
} 

Это работает правильно, все, кроме одной части ... Это рисунка последней текстуры, что я загружен, даже хотя я не привязываю его нигде в программе, потому что я убедился в этом. Затем он масштабирует его, чтобы вписаться в размеры текстового окна.

Может ли кто-нибудь помочь мне устранить эту ошибку и направить меня туда, где я могу узнать, как установить непрозрачность квадроциклов, а также нарисовать текст?

+1

В OpenGL отсутствует страница "Документальный фильм". О чем именно вы говорили? –

+1

http://www.opengl.org/documentation/ –

ответ

0

Попробуйте привязать текстуру, которую вы хотите, прямо перед вызовом функции. Не зная, как вы «убедились», что другая текстура не связана, это все, что я могу сказать. Кроме того, для изменения непрозрачности просто используйте одну из функций GL11.glColor4_; последний параметр - это альфа (непрозрачность) цвета.

+0

Спасибо за это, не знаю о glColor4, также ... Я не хочу, чтобы текстура была связана с этим, я просто хочу, чтобы он был черным. –

+0

Тогда не называйте 'glTexCoord2f'. Эта функция используется для визуализации текстуры над квадом. – ApproachingDarknessFish

+0

О, вау, я идиот. Спасибо –

0
void drawTextBox(int fromLeft, int fromTop, int width, int height) { 

    glEnable(GL_BLEND); 
    glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); 
    glColor4f(1.0f, 1.0f, 1.0f, <B>0.5f</B>); 

    glBegin(GL_QUADS); 
     glTexCoord2f(0, 0); 
     glVertex2i(fromLeft, fromTop); // Upper Left 
     glTexCoord2f(1, 0); 
     glVertex2i(fromLeft - width, fromTop); // Uppright 
     glTexCoord2f(1, 1); 
     glVertex2i(fromLeft - width, fromTop + height); // Bottom right 
     glTexCoord2f(0, 1); 
     glVertex2i(fromLeft, fromTop + height); // bottom left 
    glEnd(); 

    glDisable(GL_BLEND); 
} 

Этот блок кода позволяет нарисовать белый прямоугольник с непрозрачностью% 50.

Взгляните на часть BOLDED (0.5f). Это число с плавающей точкой определяет непрозрачность вашего прямоугольника. Чем больше это число (0.0f ~ 1.0f), тем больше непрозрачность прямоугольника.

Смежные вопросы