Итак, я просто пытаюсь нарисовать текстуру на два треугольника, размер которых равен размеру видового экрана, но он разбивает изображение и искажает его, я попытался изменить размер файла изображения и всего , но ничего не работает. Ниже приведен код, который отображает текстуру и рисует треугольники.OpenGL Texture Mapping искажает изображение
public void Render()
{
Texture texture = _textureManager.Get("splash");
Gl.glEnable(Gl.GL_TEXTURE_2D);
Gl.glBindTexture(Gl.GL_TEXTURE_2D, texture.Id);
double height = 720;
double width = 1280;
double x = 0;
double y = 0;
double z = 0;
float topUV = 0;
float bottomUV = 1;
float leftUV = 0;
float rightUV = 1;
Gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);
Gl.glBegin(Gl.GL_TRIANGLES);
{
Gl.glTexCoord2d(leftUV, topUV);
Gl.glVertex3d(x - width, y + height, z);
Gl.glTexCoord2d(rightUV, topUV);
Gl.glVertex3d(x + width, y + height, z);
Gl.glTexCoord2d(leftUV, bottomUV);
Gl.glVertex3d(x - width, y - height, z);
Gl.glTexCoord2d(rightUV, topUV);
Gl.glVertex3d(x + width, y + height, z);
Gl.glTexCoord2d(rightUV, bottomUV);
Gl.glVertex3d(x + width, y - height, z);
Gl.glTexCoord2d(leftUV, bottomUV);
Gl.glVertex3d(x - width, y - height, z);
}
Gl.glEnd();
}
Вот оригинальное изображение:
И вот результат:
Изображение 1920 х 1080, а окна просмотра 1280 х 720, но я не слишком уверен, что это важно, потому что я попытался изменить размер изображения и ничего не работает.
Просто из любопытства, как это квадратная текстура? Если изображение 1920x1080, это далеко от квадрата. И прежде чем вы соблазняетесь изменить это на «прямоугольную» текстуру, вы должны знать, что в GL уже есть что-то, что называется текстурой прямоугольника, отличной от 2D-текстуры (текстуры прямоугольника используют ненормированные координаты текстуры). –
Тем не менее, я подозреваю, что часть вашей проблемы может быть связана с тем, что размеры не являются силовыми. Кроме того, чтобы не использовать нормализованные координаты текстуры, текстура прямоугольника также будет преодолевать проблемы с этим. * Можете ли вы попробовать изменить размер текстуры на две части (скажем, 1024x1024) в качестве теста? * –
Изменение размера изображения до 1024 x 1024 устраняет проблему. Итак, чтобы нарисовать изображение в его первоначальном разрешении, я немного смущен тем, что мне нужно изменить? – Debasertron