2013-02-21 3 views
1

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

Как сделать несколько изображений и как их поместить, где я хочу?

Что еще более важно, поддерживает ли OpenGL «прозрачную» функцию изображений PNG? Так как я разработал свой начальный экран, имея полупрозрачный ящик для входа, полупрозрачные кнопки и т. Д.

Я знаю, как загружать изображения, хотя их рисование - это совсем другая история.

public void drawStartScreen() { 
     Color.white.bind(); 
     c.getAssets().backgroundImage.bind(); // or GL11.glBind(c.getAssets().backgroundImage.getTextureID()); 
     GL11.glBegin(GL11.GL_QUADS); 
     GL11.glTexCoord2f(0, 0); 
     GL11.glVertex2f(0, 0); 
     GL11.glTexCoord2f(1, 0); 
     GL11.glVertex2f(c.getAssets().backgroundImage.getTextureWidth(), 0); 
     GL11.glTexCoord2f(1, 1); 
     GL11.glVertex2f(c.getAssets().backgroundImage.getTextureWidth(), 
       c.getAssets().backgroundImage.getTextureHeight()); 
     GL11.glTexCoord2f(0, 1); 
     GL11.glVertex2f(0, c.getAssets().backgroundImage.getTextureHeight()); 
     GL11.glEnd(); 

     if(playMusic == true) { 
      c.getAssets().backgroundMusic.playAsMusic(1.0f, 1.0f, true); 
      playMusic=false; 
     } 
    } 

Я не могу понять, как перемещать изображение вокруг, используя приведенный выше код, поэтому я не могу написать свой собственный метод «Заполнить» вышеуказанный код «Параметры».

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

Это то, что я имел в виду «Прозрачная» поддержка:

img

ответ

1

У меня уже есть игра загружая на правильные размеры, показывая фон

Если вы следовали один из многих плохих уроков, разбросанных по всему Интернету, вы делаете это неправильно. OpenGL - это конечный автомат, что означает, что вы можете изменить все, что хотите, когда захотите.

Большинство учебных пособий помещают настройку glViewport и проекционной матрицы в обработчик изменения размера окна. Это работает, если вы показываете только сцену без дополнительных элементов. Но в таких случаях, как ваша, эта установка довольно неудобна.

Просто выполните простую вещь. Вы можете изменить видовое окно и проекцию на все, что вам подходит, когда вам это нужно. Вы хотите нарисовать изображение по центру экрана? Просто установите в иллюминатор и проекции, как вам нужно:

glViewport(0, 0, win_width, win_height); 
aspect = win_width/win_height; 
projection_ortho(-aspect, aspect, -1, 1); 

Что еще более важно, это поддержка OpenGL в «Прозрачный» особенность PNG изображений?

Да, это называется смешивание.

+0

Не могли бы вы связать меня с учебным пособием, в котором показано, как правильно использовать OpenGL, потому что все показывает другой метод, который становится все более запутанным каждый раз, также я не могу найти что-либо в OpenGL для projection_ortho, что я должен будет сделать обычную пустоту? Существует, однако, GL_ProjectionMatrix –

+1

@ChristianTucker: это была просто сокращенная версия нескольких строк орфографической проекции.Однако вы четко задаете эти вопросы, что вам нужно немного отступить и получить основы OpenGL. Прежде всего: Забудьте о конвейере с фиксированной функцией. Он устарел, и каждый графический процессор, построенный с 2004 года, программируется через шейдеры. В качестве учебного пособия я рекомендую http://arcsynthesis.org/gltut Nicol Bolas - проследить его, и у вас есть четкое представление о том, что делать. – datenwolf

+0

Спасибо за это, да, поскольку я говорил, что у меня не было предыдущего опыта работы с графикой, и учебники онлайн серьезно отправляют меня по всему месту. –