2012-06-01 2 views
1

Я рисую некоторые моменты в OpenGL (JOGL) следующим образом:OpenGL JOGL текстуры контур

BufferedImage image = loadMyTextureImage(); 
Texture tex = TextureIO.newTexture(image, false); 
tex.setTexParameteri(GL.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR); 
tex.setTexParameteri(GL.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR); 
tex.bind(); 

gl.glColor4f(r,g,b,a);   
gl.glBegin(GL_POINTS); 
for (int i = 0; i < numPoints; i++) { 
    // compute x,y,z 
    gl.glVertex3f(x,y,z); 
} 
gl.glEnd(); 

Мои image это белое изображение, так что я могу повторно использовать ту же самую текстуру и просто окрашивать его с помощью gl.glColor4f, но Я хотел бы нарисовать схему вокруг нее в другом цвете. Есть ли способ сделать это?

+0

Вам совсем не нужна текстура, если она чисто чистая :-) И какой вид вы хотите? Тонкая цветная линия произвольного цвета? «светится» вокруг краев? заполнение градиентом до краев? Это зависит от того, какой артистический эффект вы пытаетесь достичь ... – mikera

+0

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

ответ

2

Если вы используете текстуру для определения формы точки, то очевидным способом выполнения контура было бы добавить вторую текстуру, чтобы нарисовать контур точки сверху.

Текстура контура также была бы белой, чтобы вы могли покрасить ее в любой цвет, который вам нравится, таким же образом.

В зависимости от используемого режима альфа-смешивания это также можно использовать, чтобы дать эффект «светящегося» края.

+0

Я думал о том, чтобы сделать это таким образом, но я думаю, что это потребует от меня сначала нарисовать все контуры, а затем все заливки (или наоборот), так как я не думаю, что могу переключать текстуры, пока я нахожусь в GL_POINTS , Это приведет к тому, что все заливки будут расположены поверх всех контуров. –

+1

Вы можете связать сразу две текстуры (хотя вам может понадобиться GLSL для получения определенных эффектов смешивания). В любом случае, это, пожалуй, лучший подход к производительности. – mikera

+0

Я дам этот выстрел, спасибо. –

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