|
31.07.2010, 12:18
|
#16
|
Знающий
Регистрация: 22.12.2007
Сообщений: 223
Написано 22 полезных сообщений (для 51 пользователей)
|
Ответ: FAQ
Я понимаю английский язык, не понятно, что такое "graphics object" и "graphics command" .. и вообще смысла не понятно в использовании "минусового значения"..
|
(Offline)
|
|
31.07.2010, 12:34
|
#17
|
Быдлокодер
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,024
Написано 2,312 полезных сообщений (для 5,349 пользователей)
|
Ответ: FAQ
Сообщение от DTamaturg
Я понимаю английский язык, не понятно, что такое "graphics object" и "graphics command" .. и вообще смысла не понятно в использовании "минусового значения"..
|
Ы, "графический объект", "графическая команда", Ы, "минус один" - отрицательное значение, чего непонятно?
Это правда из справки Blitz3D, но по смыслу аналогично:
Команда Flip меняет местами FrontBuffer() и BackBuffer().
Эта команда должна применяться, когда Вы используете двойную буферизацию. Двойная буферизация - методика, используемая, чтобы гарантировать, что обновления экрана не заметны для пользователя. Если Вы выводите изображение непосредственно в FrontBuffer, на экране могут появляться неприятные эффекты, поскольку обновления происходят непосредственно на экране. Если Вы выводите графику в BackBuffer, обновления происходят в памяти. Когда происходит обмен буферов, BackBuffer превращается в FrontBuffer и, следовательно, обновление на экране происходит практически мгновенно. В то же самое время, FrontBuffer становится BackBuffer-ом, позволяя Вам снова рисовать в BackBuffer-е следующий кадре до следующего "переворота" буферов.
Параметр vwait определяет, будет ли видеоплата ждать пробела по вертикали перед обменом буферов. Пробел по вертикали - событие, которое происходит в процессе регенерации изображения на экране монитора, и соответствует моменту времени, когда последняя (нижняя) линия развертки экрана была отображена, а первая (верхняя) линия еще не выводится. Когда программа ждет пробела по вертикали, то гарантируется гладкое обновление экрана, поскольку изображение, выводимое монитором изменится только тогда, когда оно полностью занимает весь экран, и он должен начать обновление.
Заметьте, однако, что это относится только к видеоплате, и некоторые видеоплаты позволяют пользователю отключать синхронизацию по вертикали. Поэтому, если Вы полагаетесь только на одну команду Flip, изображение может быть нарушено при определенных настройках. В этом случае Вам может быть полезна команда VWait, поскольку она вынуждает центральный процессор ждать пробела по вертикали (в противоположность видеоплате), и это не может быть заблокировано. Следовательно, действительно плавные обновления экрана могут быть достигнуты при использовании сочетания "VWait: Flip False".
P.S. Предупреждаю, я мог и напутать всё!
|
(Offline)
|
|
31.07.2010, 13:54
|
#18
|
Знающий
Регистрация: 22.12.2007
Сообщений: 223
Написано 22 полезных сообщений (для 51 пользователей)
|
Ответ: FAQ
так "по-хорошему" нужна вертикальная синхронизация? дело в том, что когда ее использую, то получается слишком медленно и даже изображение не поспевает за координатами мыши, а если не использую, то изображения "дрожат", "рвутся"..
|
(Offline)
|
|
31.07.2010, 14:56
|
#19
|
Быдлокодер
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,024
Написано 2,312 полезных сообщений (для 5,349 пользователей)
|
Ответ: FAQ
Сообщение от DTamaturg
так "по-хорошему" нужна вертикальная синхронизация? дело в том, что когда ее использую, то получается слишком медленно и даже изображение не поспевает за координатами мыши, а если не использую, то изображения "дрожат", "рвутся"..
|
По разному, иногда эта синхронизация только ресурсы за зря жрёт, надо просто стабилизацию FPS ставить. Как не спрашивай, я BlitzMax в руках не держал...
И не забывай, я смотрю со стороны Блица!
|
(Offline)
|
|
31.07.2010, 15:52
|
#20
|
Знающий
Регистрация: 22.12.2007
Сообщений: 223
Написано 22 полезных сообщений (для 51 пользователей)
|
Ответ: FAQ
Пусть тогда ответит тот, кто знает. Ведь эта ветка форума предназначена именно для предоставления ответов, касающихся BlitzMax'а.
|
(Offline)
|
|
31.07.2010, 19:06
|
#21
|
Быдлокодер
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,024
Написано 2,312 полезных сообщений (для 5,349 пользователей)
|
Ответ: FAQ
Сообщение от DTamaturg
Пусть тогда ответит тот, кто знает. Ведь эта ветка форума предназначена именно для предоставления ответов, касающихся BlitzMax'а.
|
Ну вертикальная синхронизация везде одинаковая.
|
(Offline)
|
|
21.12.2010, 13:42
|
#22
|
Знающий
Регистрация: 22.12.2007
Сообщений: 223
Написано 22 полезных сообщений (для 51 пользователей)
|
Ответ: FAQ
Хотел спросить, есть ли разница между:
global obj1:TType = new TType
global obj2:TType = obj1
и:
global obj1:TType = new TType global obj2:TType = new TType obj2 = obj1
Где-то читал, что в одном случае не происходит удаление "сборщиком"..
|
(Offline)
|
|
21.12.2010, 14:58
|
#23
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: FAQ
Давай читать код вместе,
"глобальная переменная obj1 типа TType равна новому экземпляру класса TType
глобальная переменная obj2 типа TType равна переменной obj1"
что из этого следует? Что мы создали две глобальных переменных, в одну поместили объект, вторую сделали псевдонимом первой. Т.е. в сухом остатке у нас 1 объект и две переменных по которым его можно получить.
Второй код:
"глобальная переменная obj1 типа TType равна новому экземпляру класса TType
глобальная переменная obj2 типа TType равна новому экземпляру класса TType
переприсвоить значение переменной obj2 на значение переменной obj1"
Как результат создано два разных объекта и сохранены в разных переменных. Потом одна из переменных переприсвоена на первый объект.
Т.е. тот объект что был в ней теперь недоступен, и скорее всего будет уничтожен (сборщик мусора вроде бы умеет их находить).
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
21.12.2010, 15:22
|
#24
|
Знающий
Регистрация: 22.12.2007
Сообщений: 223
Написано 22 полезных сообщений (для 51 пользователей)
|
Ответ: FAQ
Т.е. в обоих случаях будет два указателя и один объект (сегмент памяти)?
Еще вопрос: что такое "отражение" и зачем оно нужно. Читал в описании, но еще больше запутался. Не увидел выгоды применения этого подхода. Объясните на простом маленьком примере (можно с кодом).
|
(Offline)
|
|
21.12.2010, 15:25
|
#25
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: FAQ
З.Ы. проверить настигает ли объект неминуемый конец от лап жнеца сборщика мусора легко, дописав деструктор, выводящий в дебаг последний крик боли уносящегося в пучину цифрового ада объекта.
__________________
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо SBJoker за это полезное сообщение:
|
|
21.12.2010, 15:29
|
#26
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: FAQ
Сообщение от DTamaturg
Т.е. в обоих случаях будет два указателя и один объект (сегмент памяти)?
|
Именно.
Для создания копий надо писать уже метод клонирования.
Сообщение от DTamaturg
что такое "отражение"
|
Сам неюзал, но смысл в том чтобы обращаться к объектам по имени, по строковому имени. Т.е. ты неимеешь указателя на объект но он тебе нужен, то можно его получить указав его имя (имя переменной где он лежит).
псевдокод: Local obj:MyType = Reflection.GetVar("SelectedObject")
ну и где то в коде есть переменная с таким именем. Вопщем это как получение объектов в TMap по ключу.
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
24.12.2010, 16:45
|
#27
|
Знающий
Регистрация: 22.12.2007
Сообщений: 223
Написано 22 полезных сообщений (для 51 пользователей)
|
Ответ: FAQ
Какой программный интерфейс использует BlitzMax по умолчанию (OpenGL или DirectX) и как узнать/переключиться между ними? В описании идет речь о "графическом объекте", т.е. это и есть один из графических интерфейсов?
|
(Offline)
|
|
25.12.2010, 10:25
|
#28
|
Дэвелопер
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений (для 886 пользователей)
|
Ответ: FAQ
Для винды по дефолту ставится ДХ, для остальных ОГЛ.
Для выбора конкретного драйвера (на данный момент их 4) есть функция
Function SetGraphicsDriver( driver:TGraphicsDriver,defaultFlags=GRAPHICS_BACKBUFFER )
В хелпе есть и примерчик
Вообще полезно прочитать полное описание модуля BRL.Graphics (а ещё лучше всех модулей).
|
(Offline)
|
|
25.12.2010, 13:19
|
#29
|
Дэвелопер
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений (для 1,985 пользователей)
|
Ответ: FAQ
Да и, вроде если подключить brl.glmax2d, то будет openGL.
Если подключить brl.d3d%7 или 9%max2d, то будет DirectX%7 или 9%.
Если brl.max2d, то подключит в соответствии с операционной системой(DirectX под виндами, OpenGL в линухе и маке)
|
(Offline)
|
|
26.12.2010, 16:09
|
#30
|
Знающий
Регистрация: 22.12.2007
Сообщений: 223
Написано 22 полезных сообщений (для 51 пользователей)
|
Ответ: FAQ
Установка драйвера в соответствии с ОС происходит при запуске исполняемого файла (готовой игры) или определяется уже при компиляции (т.е. зависит от того, в какой системе создавалась игра)?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:02.
|