Артефакты текстуры при разных значениях масштабирования ортогональной камерыC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Артефакты текстуры при разных значениях масштабирования ортогональной камеры

Сообщение Anonymous »

Я работаю над рендерингом 2D-пиксельных спрайтов в OpenGL и столкнулся с некоторыми проблемами с текстурами. При разных масштабах камеры артефакты появляются в виде нежелательных пикселей на текстурах, имеющих прозрачные пиксели. Я использую фильтр Nearest и режим обертывания ClampToEdge для текстур, не использую MIP-карты для текстур, MSAA отключен
минимальный воспроизводимый пример
Скриншоты артефактов :
Изображение

Изображение

Мой код создания орфографической матрицы (C#):

Код: Выделить всё

float x = (float)MainWindow.instance.ClientSize.X;
float y = (float)MainWindow.instance.ClientSize.Y;

float aspectRatio = x / y;

projection = Matrix4.CreateOrthographic(_zoom * aspectRatio, _zoom, -10, 10);
Код текстуры (C#):

Код: Выделить всё

GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Nearest);

GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter,(int)TextureMagFilter.Nearest);

GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS,(int)TextureWrapMode.ClampToEdge);

GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT,(int)TextureWrapMode.ClampToEdge);
Вершинный шейдер:

Код: Выделить всё

#version 330

layout(location = 0) in vec2 a_Position;
layout(location = 1) in vec4 a_Color;
layout(location = 2) in vec2 a_TexCoords;

out vec4 color;
out vec2 texCoord;

uniform mat4 u_ViewProjection;

void main()
{
color = a_Color;
gl_Position =  u_ViewProjection * vec4(a_Position, 0, 1.0f);
texCoord = a_TexCoords;
}
Фрагментный шейдер:

Код: Выделить всё

#version 330

in vec4 color;
in vec2 texCoord;

out vec4 outputColor;
uniform sampler2D texture0;

void main()
{
outputColor = texture(texture0, texCoord) * color;
}
Я попробовал изменить режим переноса на другой, но это не решило мою проблему. Я попробовал изменить код создания орфографической матрицы, но это тоже не помогло. Пробовал использовать разные видеокарты: Intel HD Graphics 4600 и Nvidia 820M. На видеокарте Intel артефакты присутствуют, а на видеокарте Nvidia они отсутствуют


Подробнее здесь: https://stackoverflow.com/questions/791 ... hic-camera
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Артефакты текстуры при разных значениях масштабирования ортогональной камеры
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Как плавно изменить размер ортогональной камеры?
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Как плавно изменить размер ортогональной камеры?
    Anonymous » » в форуме C#
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Как плавно изменить размер ортогональной камеры?
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Как плавно изменить размер ортогональной камеры?
    Anonymous » » в форуме C#
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»