Джонни Опубликовано 12 октября, 2016 Поделиться Опубликовано 12 октября, 2016 Есть необходимость отключить рендеринг в игре, подскажите куда надо копать ? Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 12 октября, 2016 Поделиться Опубликовано 12 октября, 2016 Привет! Копать в сторону хуков (перехвата функций), в частности - функций вывода картинки на экран. Условно, рисование происходит примерно таким образом: есть два буфера, один - сейчас на экране, на второй мы рисуем: 0. Нарисовать все на буфер1 1. Поменять местами буфер0 и буфер1 За это ответственны определенные функции. Например, Direct3D9->Present. В процессе рисования на буфер1 используются (обычно) функции рисования так называемых примитивов - точек, линий, треугольников и т.п. Типа вот так: 0. Нарисовать задний план 1. Нарисовать модели (игроков, врагов, здания и т.д.) 2. Нарисовать UI (здоровье игрока, патроны, оружие и т.д.) 3. Поменять местами буфер0 и буфер1 За это тоже есть ответственные функции, например, Direct3D9->DrawIndexedPrimitive. Если ты перехватишь эти функции, то тебе будет предоставлена возможность управлять тем, что выводится на экран. Ссылка на комментарий Поделиться на другие сайты Поделиться
Джонни Опубликовано 14 октября, 2016 Автор Поделиться Опубликовано 14 октября, 2016 ясно. что посоветуешь посмотреть из уроков чтобы вникнуть в тему ? Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 14 октября, 2016 Поделиться Опубликовано 14 октября, 2016 12 minutes ago, Джонни said: ясно. что посоветуешь посмотреть из уроков чтобы вникнуть в тему ? Мои уроки или уроки @Coder, все есть тут в соответствующем разделе. И практиковаться, само собой. Ссылка на комментарий Поделиться на другие сайты Поделиться
Джонни Опубликовано 14 октября, 2016 Автор Поделиться Опубликовано 14 октября, 2016 keng как на счет платной помощи или обучения в этом вопросе? с конечной реализацией в виде трейнера на С# например. Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 14 октября, 2016 Поделиться Опубликовано 14 октября, 2016 14 hours ago, Джонни said: keng как на счет платной помощи или обучения в этом вопросе? с конечной реализацией в виде трейнера на С# например. Тет-а-тет - отказать, т.к. у меня очень мало свободного времени. Тут вполне можешь задавать любые вопросы - постараюсь ответить. Язык значения не имеет. Ссылка на комментарий Поделиться на другие сайты Поделиться
Джонни Опубликовано 15 октября, 2016 Автор Поделиться Опубликовано 15 октября, 2016 может кого то посоветуешь ? имеет ли смысл кинуть вопрос в ветку "Платные вопросы" ? Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 15 октября, 2016 Поделиться Опубликовано 15 октября, 2016 15 minutes ago, Джонни said: может кого то посоветуешь ? имеет ли смысл кинуть вопрос в ветку "Платные вопросы" ? Могу посоветовать попробовать сначала сделать все самостоятельно. Ссылка на комментарий Поделиться на другие сайты Поделиться
2zolo2 Опубликовано 15 октября, 2016 Поделиться Опубликовано 15 октября, 2016 Джонни, напиши подробно что хочешь получить, и для какой игры, может помогу. Ссылка на комментарий Поделиться на другие сайты Поделиться
Джонни Опубликовано 15 октября, 2016 Автор Поделиться Опубликовано 15 октября, 2016 Ок, почему бы нет. Спасибо что помогаешь. Тогда вопрос. Почему бы в моем случае не выловить функцию d3ddev -> BeginScene и пропустить все что там рисуется (будет не плохая экономия ресурсов) Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 15 октября, 2016 Поделиться Опубликовано 15 октября, 2016 Потому что в случае с direct3d происходит примерно такая ситуация: BeginScene(); // Захотели порисовать ... // Рисуем EndScene(); // Закончили рисовать Present(); // Отобразили на экране Если перехватить BeginScene, то ты нарисуешь что-то до всего игрового, если EndScene или Present - то после (поверх). Тебе же, как я понимаю, нужно отдельные вещи просто не рисовать, так что перехватывать нужно функции рисования (напр. DrawIndexedPrimitive), которые вызываются между BeginScene и EndScene. Ссылка на комментарий Поделиться на другие сайты Поделиться
Джонни Опубликовано 15 октября, 2016 Автор Поделиться Опубликовано 15 октября, 2016 по сути мне для эксперимента надо отключить весь вывод на экран графики. И ничего своего не рисовать. Так что наверное перехват BeginScene с GoTo на EndScene будет самое оно. так ? Ссылка на комментарий Поделиться на другие сайты Поделиться
2zolo2 Опубликовано 15 октября, 2016 Поделиться Опубликовано 15 октября, 2016 18 минуту назад, Джонни сказал: Так что наверное перехват BeginScene с GoTo на EndScene будет самое оно. так ? Нет, тебе надо перехватывать функций которые работают с 3D моделями и текстурами. Найди у keng на сайте код, про хамелеон, может поможет. P.S. и забуть ты про BeginScene, тебе надо только Present, EndScene, DrawIndexedPrimitive и функций которые работают с 3D моделями и текстурами. Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 15 октября, 2016 Поделиться Опубликовано 15 октября, 2016 36 minutes ago, 2zolo2 said: Найди у keng на сайте код, про хамелеон, может поможет. Или [вот]. А [вот] исходник хамелеона из [этой] статьи. SHA коммита - 789beea9c1fd675549c6b3c61d72d816e4d617ae. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Alexs7k Опубликовано 5 февраля, 2017 Поделиться Опубликовано 5 февраля, 2017 (изменено) Тоесть достаточно перехватить DrawIndexedPrimitive и вместо нее подставить свою функцию которая ничего не делает? Изменено 5 февраля, 2017 пользователем Alexs7k Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения