Сглаженные строки с использованием jogl в Windows 7 выглядят ужасно - PullRequest
1 голос
/ 13 января 2012

Мое java-приложение использует jogl для создания поверхностей с наложенной сеткой.Линии сетки сглаживаются.Однако в Windows сглаживание является полным мусором, если я не добавлю небольшое альфа-значение на поверхность.Вот скриншоты одной и той же сцены на всех трех платформах:

Mac OS X:

Mac OSX

Ubuntu 11.10:

Ubuntu 11.10

Windows 7:

Windows

Windows 7 с альфа = 0,01:

Windows with (small) alpha (0.01)

Основная процедура длясоздайте это следующим образом:

gl.glPushAttrib( GL.GL_ALL_ATTRIB_BITS );
gl.glEnable(GL.GL_POLYGON_OFFSET_FILL);
gl.glPolygonOffset(1.0f, 1.0f); 
drawSurface(gl);
gl.glDisable(GL.GL_POLYGON_OFFSET_FILL);
gl.glPopAttrib();

gl.glDisable( GL.GL_LIGHTING );
gl.glDepthFunc(GL.GL_LEQUAL);
float[] c = {0, 0, 0, 0.5f};
gl.glColor4fv(c, 0);//the alpha here gets overridden if one is specified for the surface (which is why the Windows-with-alpha produces a darker grid)
drawGrid(gl);
gl.glDepthFunc(GL.GL_LESS);
gl.glEnable( GL.GL_LIGHTING );

Метод drawSurface () также выполняет следующие действия перед созданием полигонов для поверхности (используя примитивы GL_TRIANGLE_STRIP):

gl.glPushAttrib(GL.GL_LIGHTING_BIT);
gl.glColorMaterial(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE);
gl.glEnable(GL.GL_COLOR_MATERIAL);

DrawGrid ()Метод устанавливает сглаживание следующим образом:

gl.glEnable(GL.GL_BLEND);
gl.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA);
gl.glEnable(GL.GL_LINE_SMOOTH);
gl.glHint(GL.GL_LINE_SMOOTH_HINT, GL.GL_NICEST);

Сама сетка создается с использованием GL_LINE_STRIPs

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

Что касается аппаратного обеспечения, у меня установлена ​​двойная загрузка IBM ThinkPad (64-разрядный четырехъядерный процессор) с интегрированной картой nVidia 3100M и Intel Core2 Duo iMac с ATI Radeon.Поскольку Ubuntu и Windows работают на одном и том же оборудовании, я знаю, что это не может быть аппаратной проблемой.

Я ищу предложения по улучшению сглаживания линий сетки в Windows.

1 Ответ

1 голос
/ 13 января 2012

Оказывается, я не пробовал (я думал, что сделал, но я не восстановил и не протестировал это правильно) gl.glDepthMask (false);

Добавление этого корректно значительно улучшило фрагментацию сглаженных линий сетки.

Тем не менее, я все еще не на 100% доволен видом линий, но на данный момент этот вопрос решен. Вот снимок экрана «улучшенных» линий сетки:

enter image description here

Хотя это большое улучшение, оно все же не так хорошо, как Mac OS X или даже Ubuntu.

...