ПрограммированиеФорумГрафика

Криво накладывается текстура на спрайт.

Страницы: 1 2 Следующая »
#0
23:07, 16 мар 2015

Я понимаю что возможно допустил очень глупую ошибку но ни как не могу её найти поэтому прошу тыкнуть в неё пальцем.
Примерно так должен выглядеть спрайт:
Изображение
Но:
Изображение
//полоска слева - кусок права.

изображение гружу вот так:

+ Показать

Вертексы создаю вот так:

+ Показать

Структурка:

+ Показать

Буферы создаю вот так:

+ Показать

Рисую так:

+ Показать

Вроде бы всё правильно только хз что не так..

#1
23:24, 16 мар 2015

Иожет параметры камеры и рендер буфера не совпадают?

#2
23:26, 16 мар 2015

Anders333
> Иожет параметры камеры и рендер буфера не совпадают?
камера пока что не написана. она обязательна?

#3
1:16, 17 мар 2015

Напиши нормальную загрузку твоего bmp с использованием BITMAPFILEHEADER / BITMAPINFOHEADER.
Конкретно, правильное положение, собственно, массива пикселей лежит в BITMAPFILEHEADER::bfOffBits.
А, вообще, лучше используй библиотеки для работы с картинками.

#4
3:27, 17 мар 2015

Dzhekson6000
Если ты загружаешь .bmp формат таким образом, то загрузка должна выглядеть вот так:

+ Показать

Буферы поправь так:

+ Показать
#5
8:21, 17 мар 2015

Кривая проекция, очевидно же. Геометрия совпадает с вьюпортом, хотя должна быть квадратной. Показывай шейдеры и где ты выставляешь матрицу.

#6
14:56, 17 мар 2015

Funtik
поправил как ты сказал.
Dampire
> Кривая проекция, очевидно же. Геометрия совпадает с вьюпортом, хотя должна быть
> квадратной. Показывай шейдеры и где ты выставляешь матрицу.

Матрицу выставляю тут:

+ Показать

Работа с шейдарами:

+ Показать

Сам шейдеры:
Вертекстный:

+ Показать

Фрагментный:

+ Показать
#7
15:07, 17 мар 2015

Dzhekson6000
Говоря про камеру, я имел ввиду видовую/проекцонную матрицы. Покажи как ты матрицу  МVP создаешь. И параметры окна какие?

#8
15:15, 17 мар 2015

Anders333
MVP выше показывал. вот ещё раз.

+ Показать

А потом в createSprite():

+ Показать

Окно вот такое:

+ Показать
#9
15:21, 17 мар 2015

Проекционную матрицу покажи. У меня например спрайт создается с экранным координатами, поэтому мне ненужны матрицы в шейдерах. У тебя прямоугольник создается в мировых координатах или координатах экрана? Если в мировых, тогда тебе надо проекцию производить. На данный момент ты рисуешь квадрат в экранных координатах, поэтому он вытянут.

#10
15:33, 17 мар 2015

Anders333
в экранных.

#11
15:42, 17 мар 2015

Dzhekson6000
Тогда ты неправильно считаешь позицию вертексов. Береш отношение экрана, и используешь его. Например тебе надо квадрат 50*50 пикселей в центре. Размер окна 800*600.
Пиксель в вертикале py = 2/600, в горизонтале px = 2*800.

точки квадрата [-25*px;25*py], [25*px;25*py] , [-25*px;-25*py], [25*px;-25*py].

Правка: поправил немножко данные.

#12
16:01, 17 мар 2015

Anders333
> Dzhekson6000
> Тогда ты неправильно считаешь позицию вертексов. Береш отношение экрана, и
> используешь его. Например тебе надо квадрат 50*50 пикселей в центре. Размер
> окна 800*600.
> Пиксель в вертикале равен 1/600, в горизонтале равен 1*800. точки квадрата
> [-25/600;25/800], [25/600;25/800] , [-25/600;-25/800], [25/600;-25/800].
Я знаю как считать позицию вертексов. В данном случае мне не важен размер квадрата. Мне нужно правильно наложить на него текстуру.

#13
16:05, 17 мар 2015

У тебя квадрат был с размером не 1*1 а 1,3*1, так что:

+ Показать

ЗЫ:
Хотя, конечно можно и так как ты хочешь. Ставиш текстуры настройки чтобы она не повторялась(роде настройки с бордером). И правиш координаты тестуры, как тебе угодно. Хотя по мне, так лучше создать правильный квадрат.

ЗЫ2: делай проекционную матрицу, и будет тебе счастье =)

#14
16:50, 17 мар 2015

Немного изменил загрузку и создание вертексов:

+ Показать

И добавил параметры в генерацию текстуры:

+ Показать

Вот результат.
Изображение

Ощущение что неправильно задаются координаты начала текстуры :(

Ну или текстура неправильно подгружается..

Страницы: 1 2 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.

Тема закрыта.