Forums.Avtograd.Ru: Мультимедийное ПО - Forums.Avtograd.Ru

Перейти к содержимому

  • (2 Страниц)
  • +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Мультимедийное ПО OpenGL, DirectX, алгоритмы, звук и т.д.

#1 Пользователь офлайн   cheerduck

  • Пользователь
  • PipPip
  • Группа: Пользователи
  • Сообщений: 123
  • Регистрация: 01 Ноябрь 07

Отправлено 18 Ноябрь 2007 - 14:55

вообще очень предлагаю тут отписываться заинтересованым
развивая тему вот вопрос, который покоя не даёт:
как можно средствами OpenGL выводить текст? (не текстурами) :rolleyes:
0


  • (2 Страниц)
  • +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Другие ответы в этой теме

#21 Пользователь офлайн   Lakilea

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 860
  • Регистрация: 16 Декабрь 07

Отправлено 08 Сентябрь 2010 - 16:52

Просмотр сообщенияsirfstar (08 Сентябрь 2010 - 16:26):

Требуется рисовать в чужом полноэкранном ddraw приложении и есть исходники прокси для ddraw. Как лучше всего это сделать? Можно прямо в дллке рисовать после создания поверхности? Времени на изучение dx нет.



Какой то вопрос некорректный. Вы сами поняли, что написали то?

Вы вот эту фразу как понимаете: "Можно прямо в дллке рисовать после создания поверхности?"
0

#22 Пользователь офлайн   sirfstar

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 81
  • Регистрация: 12 Июль 10

Отправлено 08 Сентябрь 2010 - 16:55

Цитата

Вы вот эту фразу как понимаете


Так и понимаю. Я знаю, что dx создает поверхность, на которой в последствии рисует графику, значит имея прокси-длл мне нужно после создания поверхности узнать ее адрес, а потом где-нибудь перед флипом рисовать свою графику. Не так? Потому-то и спрашиваю, что никогда с графикой не работал и времени мало.

Сообщение отредактировал sirfstar: 08 Сентябрь 2010 - 16:55

0

#23 Пользователь офлайн   Lakilea

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 860
  • Регистрация: 16 Декабрь 07

Отправлено 08 Сентябрь 2010 - 17:02

Просмотр сообщенияsirfstar (08 Сентябрь 2010 - 17:55):

Цитата

Вы вот эту фразу как понимаете


Так и понимаю. Я знаю, что dx создает поверхность, на которой в последствии рисует графику, значит имея прокси-длл мне нужно после создания поверхности узнать ее адрес, а потом где-нибудь перед флипом рисовать свою графику. Не так? Потому-то и спрашиваю, что никогда с графикой не работал и времени мало.



Что такое "прокси-длл" ? :)
И как можно "в нём" рисовать?
0

#24 Пользователь офлайн   sirfstar

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 81
  • Регистрация: 12 Июль 10

Отправлено 08 Сентябрь 2010 - 17:07

app.exe <--> proxy_ddraw.dll <--> ddraw.dll

Приложение вызывает из лежащей рядом ddraw.dll, например, CreateSurface, а эта ddraw.dll вызывает её из оригинальной и передает какой-нибудь результат обратно. 

Цитата

И как можно "в нём" рисовать?


Ну я же говорю, что у меня есть исходники такой прокси-либы. То есть я могу вставлять произвольный код при вызове игрой нужных функций.


0

#25 Пользователь офлайн   Lakilea

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 860
  • Регистрация: 16 Декабрь 07

Отправлено 08 Сентябрь 2010 - 17:17

Просмотр сообщенияsirfstar (08 Сентябрь 2010 - 18:07):

app.exe <--> proxy_ddraw.dll <--> ddraw.dll

Приложение вызывает из лежащей рядом ddraw.dll, например, CreateSurface, а эта ddraw.dll вызывает её из оригинальной и передает какой-нибудь результат обратно. 

Цитата

И как можно "в нём" рисовать?


Ну я же говорю, что у меня есть исходники такой прокси-либы. То есть я могу вставлять произвольный код при вызове игрой нужных функций.



я НИ_ЧЕ_ГО не понял.

Вы вообще мысли грамотно излагать умеете?

Приложение (какое имеено? Ваше? Удалёное?) вызывает из лежащей рядом ddraw.dll (Из лежащей рядом какой длл? Что это? динамическая библиотека, или хуй моржовый?) , например, CreateSurface, (А это что за хуйня? По виду очень напоминает фунцию директ икс по созданию сурфейса, а по факту? ) а эта ddraw.dll (какая такая ЭТА? кторая "лежащая рядом", или уже какая то другая? ) вызывает её из оригинальной (А оригинальное у нас тут - это что? ) и передает какой-нибудь результат обратно. (Куда обратно? Что подразумевается под результатом. Чего вообще вы хотите добиццо?)

Кароче, блять, не знаешь дх, ну хотя б по русски то ты можешь написать внятно чего ты хочешь вообще?
0

#26 Пользователь офлайн   sirfstar

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 81
  • Регистрация: 12 Июль 10

Отправлено 08 Сентябрь 2010 - 17:29

Излагаю как могу. Может у вас проблемы с пониманием?

> ты можешь написать внятно чего ты хочешь вообще?

Хочу отобразить свою графику поверх игровой. Написал в первом посте, очевидно.

>Приложение (какое имеено? Ваше? Удалёное?)

Если бы оно было моё, то я бы не заморачивался и переписал бы. Очевидно.

>ызывает из лежащей рядом ddraw.dll (Из лежащей рядом какой длл? Что это? динамическая библиотека, или хуй моржовый?)

Может быть и хуй, но этот хуй - PROXY DLL. Как оно рабортает - я описал на пальцах, что там не понятного? Вы с основами вызова функций знакомы? 

Ну еще раз на пальцах. Приложение hello.exe вызывает из my.dll функцию Hello("хуй", "моржовый"), причем она может искать ее в папке system32 благодаря особенностям винды. Мы ложим свою my.dll в папку с приложением, так что теперь  hello.exe вызывает Hello("хуй","моржовый") из нашей библиотеки, но нашей не нравится слово "хуй", и она заменяет его на "огурец", после чего вызывает из my.dll (которая лежит в win/system32) Hello("огурец","моржовый"). Теперь применим это к директдроу и в теории сможем нарисовать свою графику в чужой игре. Что я хочу знать, так ГДЕ это делать. 

>(какая такая ЭТА? кторая "лежащая рядом",

Да, лежащая рядом.

>(А оригинальное у нас тут - это что? )

Та, что лежит в system32, и которую игра не может вызвать потому что моя дллка лежит в папке с игрой.

//что-то тебя очень разозлило видать, скачки с "вы" на "ты", мат, ну не можешь понять - и забей на меня, убогого. Может кто-нибудь другой поймет.

Сообщение отредактировал sirfstar: 08 Сентябрь 2010 - 17:55

0

#27 Пользователь офлайн   Lakilea

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 860
  • Регистрация: 16 Декабрь 07

Отправлено 08 Сентябрь 2010 - 17:58

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

Я только только начал понимать, что вы хотите сделать.

Однако нужно уточнить ряд моментов:

Вы можете использовать оригинальную функцию дх, взятую из оригинальной библиотеки. Из любого сдк.
Какая разница откуда придёт тело функции? Оно ВЕЗДЕ ОДИНАКОВОЕ.

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

(и на кой чорт для этого нужно какое то там непонятное прокси? Это же просто надстройка над оригинальным дх, вот и всё...)

Я вам пример попробую привести. Допустим у вас имется под рукой движок на директдрав7, и своя собственная функция Pset(x,y,c,ptSurf);

Которая рисует пиксель определённого цвета по опр. координатам, в опр поверхности.

И предположим у вас есть игра, которая рисует картинку попиксельно при помощи этой функции.

Ну и как вы хотите осуществить подмену ?

Заменить родную функцию Pset на другую поддельную Pset, которая в свою очередь запустит оригинальную Pset, но уже со своими собственными аргументами?

Теоретически это возможно. Только подтасовывать придёццо не функции непосредственно дх, а функции графического движка, который сделан на дх.


Вот ещё один пример:
предположим у вашей игры есть движок, а движок умеет выполнять вот такую функцию:

функция самого движка игры: DrawSprite(x,y, Surf, &Sprite);

Она рисует спрайт по координатам. В функцию передаются координаты где нада рисовать, и (внимание!) передаётся объект, ЧТО нужно рисовать.

Дело в том, что нечто подобное присутствует в любом движке.

И что бы "поддтасовать" графику, проще наверное не тела функций движка поддасовывать, а саму графику. Сами спрайты. Понимаете?

То есть, нужно узнать в каком формате храниться контент игры, и переделать его как вам захочеццо.
0

#28 Пользователь офлайн   sirfstar

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 81
  • Регистрация: 12 Июль 10

Отправлено 08 Сентябрь 2010 - 18:04

Я не подменяю тела функций, просто наряду с выполнением этих функций я делаю что-то своё.

>То есть, нужно узнать в каком формате храниться контент игры, и переделать его как вам захочеццо.

Нет, я хочу отобразить текстовую информацию в любой момент времени. 

Допустим, когда игра нарисует всю свою графику и вызовет Flip для её отображения, я должен вызвать например TextOut чтобы написать свой текст поверх всего, что нарисовала игра, и только потом вызвать Flip? Флип - стандартная функция в ddraw, движок использует ее.

Сообщение отредактировал sirfstar: 08 Сентябрь 2010 - 18:10

0

#29 Пользователь офлайн   Lakilea

  • Активный пользователь
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 860
  • Регистрация: 16 Декабрь 07

Отправлено 08 Сентябрь 2010 - 18:15

Просмотр сообщенияsirfstar (08 Сентябрь 2010 - 19:04):

Я не подменяю тела функций, просто наряду с выполнением этих функций я делаю что-то своё.

>То есть, нужно узнать в каком формате храниться контент игры, и переделать его как вам захочеццо.

Нет, я хочу отобразить текстовую информацию в любой момент времени. 

Допустим, когда игра нарисует всю свою графику и вызовет Flip для её отображения, я должен вызвать например TextOut чтобы написать свой текст поверх всего, что нарисовала игра, и только потом вызвать Flip?


Да. Но только в том случае, если игра действительно использует флип.

Так то это от риализации зависит.

Если речь конкретно от директдрав7, то там есть два способа:

Первый - рисуем во вторичном буффере, а потом флипаем. Но он не всегда удобен. Есть особые случаи, когда флип уже не используют. Я не буду вдаваццо в подробности.

Второй способ - рисование идёт в заднем буффере, а вот что бы отобразить его в первичной плоскости используют блиттинг. То есть, копируют битмап из заднего буфера в первичную плоскость.
Аппаратный блиттинг очень быстр. А гибкости такой способ даёт гораздо больше)

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

Вам нужно узнать, что это за функция. И произвести её подмену. То есть, допустим, сначала выполниццо оригинальый код рендеренга, а потом уже выполнится ваш собственный код рисования. А заканчивается всё или флипом, или блиттером.
0

#30 Пользователь офлайн   sirfstar

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 81
  • Регистрация: 12 Июль 10

Отправлено 08 Сентябрь 2010 - 18:29

Вот и все, спасибо.
0

  • (2 Страниц)
  • +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей