LINUX.ORG.RU

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

 , ,


0

3

https://github.com/xverizex/asel

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

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

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

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

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

У нас есть, в данном случае, некий индивид, который использует чужие куски кода в решение своих задач, и обладает навыками чтения программ на неизвестном нам уровне, задача написать программу на с, которая будет чистить /home, но при этом на первый взгляд код должен быть нормальным и читабельным, чтоб индивид не догадался

Silerus ★★★★
()
Последнее исправление: Silerus (всего исправлений: 1)
Ответ на: комментарий от Silerus

Ну, решать конкретно эту задачу я не собираюсь, и не только потому, что это будет нарушением правил, но и просто это нехорошо (по крайней мере, я так считаю). Но чисто гипотетически мой метод вполне подходит. Пишешь более-менее понятный код (но не слишком понятный, чтоб совсем непонятный кусок не очень выделялся на фоне остального кода). Далее создаёшь несколько макросов, которые маскируют этот самый рм-рф или что-то подобное и равномерно распихиваешь их среди остальных макросов. Потом в каком-то месте вызываешь нужный макрос. Если индивид бегло просматривает программу и запускает её, то это сработает. Если же он внимательно изучает код, потом не менее внимательно изучает вывод препроцессора, запуская gcc с опцией -E, а потом ещё тщательно дебажит программу в виртуальном окружении с ограниченными правами, то такого индивида не провести. Ему, скорее всего, даже тухлый бинарник не удастся подсунуть, а об исходниках и говорить не приходится.

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

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

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

написать такой код сложно очень

Зависит от того, на кого этот код рассчитан. Т. е. от осторожности и квалифицированности объекта атаки.

Я думал о каких нибудь ассемблерных вставках

Можно и ассемблерными вставками. Но только при условии, что весь код ими напичкан. Потому что одна непонятно для чего созданная вставка привлечёт больше внимания, чем макрос. Кроме того, программа, написанная со вставками, будет плохо переносима даже между ia32 и amd64, о других архитектурах и говорить не приходится. Ну и между компиляторами тоже (встроенный ассемблер в gcc по дефолту отличается от встроенного ассемблера для большинства других компиляторов на архитектуре x86).

и попытке прямого доступа к устройствам без применения библиотек, еще одна проблема это защищённый режим, который ограничивает нас в правах

Если говорить о Линуксе, то можно непосредственно вызывать linux-api. Не прослойку posix, а чистый linux, который обычно не используется. Например, непосредственный вызов прерывания int 80h (то же, что досовское int 21h). А чтоб ещё сильнее запутать, можно обернуть эти вызовы в функции с непонятными или заведомо ложными названиями, а потом ещё вызывать их не напрямую, а через указатели (авось пока объект атаки будет разбираться в этих указателях, про то, что обозначают те или иные номера функций, посмотреть позабудет).

Но, опять же, всё это работает с более-менее беспечным объектом атаки. Осторожного и квалифицированного на бобах не разведёшь.

aureliano15 ★★
()
Ответ на: комментарий от Silerus

Да сделать это легче легкого, скинуть ему архивом любой проект со вшитым кодом, и сказать «на запускай проект и учись».

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

Да там любой купится, не будешь же ты весь мой код читать шо я понаписал, ты почитаешь максимум интересные куски, а потом проект скомпилируешь.

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

не будешь же ты весь мой код читать шо я понаписал, ты почитаешь максимум интересные куски, а потом проект скомпилируешь

Но очень осторожный человек сделает это в виртуальном окружении, и если программа не умеет ломать это самое окружение и выбираться наружу, то номер не пройдёт.

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

Так у меня добрый дядька на аве, зачем мне такие вещи делать. Я вот еще подсказываю, а такое встраивать ну ты чего. Да и такие люди думаю иксы не юзают, и их рабочее место выглядит как то так: Рабочее место шифропанка

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

Так у меня добрый дядька на аве

Ну, мало ли что на аве. На аве может быть одно, а под авой — совсем другое. :-)

такие люди думаю иксы не юзают, и их рабочее место выглядит как то так

Не обязательно. Я знавал очень сильных программёров, которые неработающий драйвер для linux переписывали для другой системы, и он там начинал работать. При этом сидели под виндой и даже с антивирусом не заморачивались. Когда на компе выскакивал какой-то чёртик и сообщал им, что я, дескать, вирус, но добрый и пушистый, поэтому бороться со мной не надо, — они принимали на веру и оставляли всё как есть. :-) А ведь даже добрый и пушистый вирус может неумышленно нагадить, если в его коде есть ошибки.

Да и вообще голая консоль (если только железо не вынуждает её использовать) — больше понты. Конечно, чтоб настроить её по-человечески, надо иметь некоторые навыки. Но это больше админские, нежели программистские навыки.

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