forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   DirectX and WinAPI(GDI) (http://forum.boolean.name/showthread.php?t=16106)

616}[aKeP 27.12.2011 00:52

DirectX and WinAPI(GDI)
 
Добрый вечер!

Возможно ли получив у поверхности(surface) контекст устройства(DC) рисовать в ней методами GDI?

Примерно так:
HDC hdc;
sur->GetDC(&hdc);
Rectangle(hdc,0,0,10,10);

:)

616}[aKeP 28.12.2011 18:39

Ответ: DirectX and WinAPI(GDI)
 
Спасибо большое!:) Ответил на свой же вопрос - это возможно!))
Кстате, не плохой способ 2д графику выводить!)

Knightmare 28.12.2011 19:30

Ответ: DirectX and WinAPI(GDI)
 
Плохой сопсоб 2D графику выводить. Около 10 лет назад от этого специально ушли.

616}[aKeP 28.12.2011 21:56

Ответ: DirectX and WinAPI(GDI)
 
Цитата:

Сообщение от Knightmare (Сообщение 215592)
Плохой сопсоб 2D графику выводить. Около 10 лет назад от этого специально ушли.

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

Knightmare 28.12.2011 21:59

Ответ: DirectX and WinAPI(GDI)
 
Кэп подсказывает - ушли от использования GDI в играх, ибо медленно. Если для тебя проблема нарисовать окружность, то тебе не стоит писать движка, ага.

616}[aKeP 28.12.2011 23:54

Ответ: DirectX and WinAPI(GDI)
 
Цитата:

Сообщение от Knightmare (Сообщение 215615)
Кэп подсказывает - ушли от использования GDI в играх, ибо медленно. Если для тебя проблема нарисовать окружность, то тебе не стоит писать движка, ага.

DirectX была написана, не для тупой отрисовки, ее написали для 95й винды, чтоб возможно было получить более простой доступ к аппаратной части компьютера. GDI использует те же принципы, что и directX(а возможно и вообще директ), но в гди идет отрисовка в необнавляемую часть окна, которая обновляется по сообщению, а из-за того, что сообщений много отрисовка замедленная и иногда с мерцанием. А я использую отрисовку гди для отрисовки простой геометрии в задний буфер, под геометрией я не подразумеваю треугольники, я имею ввиду, фигуры, которые сложно нарисовать используя треугольники.
А кто говорил, что для меня проблема нарисовать окружность, мне просто лень:dontknow: . А так, как я хочу написать двиг без использования сторонних библиотек, только на WinApi и DirectX, то имеющиеся в гди функции отрисовки окружности и многогранника, мне облегчат работу, ведь не факт, что моя функция будет производительней их.:ok:

Knightmare 29.12.2011 09:44

Ответ: DirectX and WinAPI(GDI)
 
Картинку фейспалма нагугли себе сам, я последнее время жутко ленив.
Потом почитай и осмысли принципы работы DX и GDI. Потом подумай на сколько порядков даже самая кривая функция отрисовки откружности через DX будет быстрее GDI.

P.S.
>А кто говорил, что для меня проблема нарисовать окружность, мне просто лень
>А так, как я хочу написать двиг без использования сторонних библиотек, только на WinApi и DirectX
/0

pozitiffcat 29.12.2011 12:52

Ответ: DirectX and WinAPI(GDI)
 

Нет слов. GDI использует DirectX. Шок.
Про мерцание из-за оконных сообщение вообще убило!
Цитата:

Одно из преимуществ использования GDI вместо прямого доступа к оборудованию — это унификация работы с различными устройствами
это означает, что это явно медленнее DirectX

616}[aKeP 29.12.2011 17:37

Ответ: DirectX and WinAPI(GDI)
 
Ну ладно ладно, согласен, уделали))) Кто в жизни не заблуждался))

pozitiffcat 29.12.2011 21:49

Ответ: DirectX and WinAPI(GDI)
 
Цитата:

Сообщение от 616}[aKeP (Сообщение 215690)
Ну ладно ладно, согласен, уделали))) Кто в жизни не заблуждался))

чувак делай как правильно, а не как тебе легче

616}[aKeP 29.12.2011 22:15

Ответ: DirectX and WinAPI(GDI)
 
Да просто, я без понятия, как в движке нормально реализовать 2д графику. Прямой доступ к заднему буферу, как я понял, невозможен при попытке изменить данные в заднем буфере вылетает ошибка в адресе памяти. Я хотел рисовать все в текстуру размером с окно и отрисовывать ее перед концом сцены, но это тоже не вариант, слишком долго. Короче я пока просты, испытываю разные средства, чтоб понять то о чем не говорится не в одной книге о, директе.

Knightmare 30.12.2011 10:57

Ответ: DirectX and WinAPI(GDI)
 
Берешь квад, натягиваешь текстуру, рисуешь, ???, ПРОФИТ. Самый простой вариант.

616}[aKeP 30.12.2011 14:46

Ответ: DirectX and WinAPI(GDI)
 
Да вывод изображений я сделал, просто иногда нужно вывести, какую-нибудь простую геометрию помимо линий и треугольников)

Randomize 08.01.2012 10:08

Ответ: DirectX and WinAPI(GDI)
 
Цитата:

Сообщение от 616}[aKeP (Сообщение 215768)
Да вывод изображений я сделал, просто иногда нужно вывести, какую-нибудь простую геометрию помимо линий и треугольников)

Что за простая геометрия?

Кстати говоря Windows7 уже практически не использует GDI.
Конечно есть возможность насильно включить GDI но будет медленнее и уродливее :-D .


Часовой пояс GMT +4, время: 01:17.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot