LINUX.ORG.RU

Помогите наложить текстуру в opengl

 , ,


0

3

https://github.com/xverizex/asel

Всё действие происходит в main.c

Программа загружает из data 3d модель и картинку. Картинку хочу использовать как текстуру. В blender делал модельку и создал uv рисунок. Нарисовал. Проверил как выглядит. Экспортировал в формат obj вместе с текстурными координатами.

Программа отображает модельку, но текстура наложена неправильно. Я когда раньше проверял загруженную картинку, то как то попробывал использовать glDrawPixels, она выводит рисунок какой он есть, это значит что я правильно перенёс рисунок. Только помню пришлось поменять направление на справа налево.

Что может быть не так? Как сделать, чтобы было правильно?

Ответ на: комментарий от linuhs_user

Получилось. Только видны артефакты, и прозрачность, помню была функция gl, которая не рисует перекрывающиеся объекты, надо искать её. Что мне с артефактами делать, рисунок 1024x1024?

https://www.youtube.com/watch?v=or2ZAbevsZQ&feature=youtu.be

u0atgKIRznY5
() автор топика
Ответ на: комментарий от linuhs_user

Если ты про glEnable ( GL_DEPTH_TEST ), то он указан в коде, в момент инициализации. Я помню было что-то вроде cull_face, но точно не помню ( это чтоб не рисовались перекрывающиеся объекты ).

u0atgKIRznY5
() автор топика
Ответ на: комментарий от u0atgKIRznY5

CullFace на отображение не влияет, если правильно сделанно. Просто отсекает для OpenGL части которые не нужно рисовать.

linuhs_user
()
Последнее исправление: linuhs_user (всего исправлений: 2)
Ответ на: комментарий от u0atgKIRznY5

Вообще мне больно смотреть.
vim -> geany
build.sh/make -> meson
png.h -> sdl2_image
gl1 -> gl2
glu -> https://github.com/arkanis/single-header-file-c-libs/blob/master/math_3d.h

Вот лучше изучи современное, старого уже хватит, понял как треугольник нарисовать и нормально.

linuhs_user
()
Ответ на: комментарий от linuhs_user

png.h -> sdl2_image

Ну я же из data все данные получаю, а sdl2_image только отдельные файлы рисунков. Конечно можно посмотреть как структура sdl_image выглядит и адаптировать её для извлечения данных из data, но это может быть сложным для меня.

u0atgKIRznY5
() автор топика
Ответ на: комментарий от linuhs_user

Я прочитал в книге что depth_test использует z координату, а моём случае рисунок был выше по y координате, и он виден был.

u0atgKIRznY5
() автор топика
Ответ на: комментарий от linuhs_user

Видно прозрачно другие детали из-за того, что треугольников не хватает. Но как такое может быть? Я же в коде все f получаю и сохраняю.

u0atgKIRznY5
() автор топика
Ответ на: комментарий от u0atgKIRznY5

Да, причем там в формате недостающий треугольник мог смещаться в любую сторону по XYZ...

linuhs_user
()
Ответ на: комментарий от u0atgKIRznY5

На гифке что я выкладывал, артефакты видел?
Ты в gluPerspective ( 60, w / h, -30, 0 ); точно всё правильно делаешь? Документацию перечитай.

uCore
()
Ответ на: комментарий от u0atgKIRznY5

Смотри
Есть только артефакт на одной из граней.
Скорее всего это проблема с текстурой, или её наложением. Мне разбираться лень.

uCore
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.