Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > BlitzMax > FAQ и уроки

Ответ
 
Опции темы
Старый 31.07.2010, 12:18   #16
JeanWinters
Знающий
 
Регистрация: 22.12.2007
Сообщений: 223
Написано 22 полезных сообщений
(для 51 пользователей)
Ответ: FAQ

Я понимаю английский язык, не понятно, что такое "graphics object" и "graphics command" .. и вообще смысла не понятно в использовании "минусового значения"..
(Offline)
 
Ответить с цитированием
Старый 31.07.2010, 12:34   #17
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,019
Написано 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
JeanWinters
Знающий
 
Регистрация: 22.12.2007
Сообщений: 223
Написано 22 полезных сообщений
(для 51 пользователей)
Ответ: FAQ

так "по-хорошему" нужна вертикальная синхронизация? дело в том, что когда ее использую, то получается слишком медленно и даже изображение не поспевает за координатами мыши, а если не использую, то изображения "дрожат", "рвутся"..
(Offline)
 
Ответить с цитированием
Старый 31.07.2010, 14:56   #19
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,019
Написано 2,312 полезных сообщений
(для 5,349 пользователей)
Ответ: FAQ

Сообщение от DTamaturg Посмотреть сообщение
так "по-хорошему" нужна вертикальная синхронизация? дело в том, что когда ее использую, то получается слишком медленно и даже изображение не поспевает за координатами мыши, а если не использую, то изображения "дрожат", "рвутся"..
По разному, иногда эта синхронизация только ресурсы за зря жрёт, надо просто стабилизацию FPS ставить. Как не спрашивай, я BlitzMax в руках не держал...
И не забывай, я смотрю со стороны Блица!
(Offline)
 
Ответить с цитированием
Старый 31.07.2010, 15:52   #20
JeanWinters
Знающий
 
Регистрация: 22.12.2007
Сообщений: 223
Написано 22 полезных сообщений
(для 51 пользователей)
Ответ: FAQ

Пусть тогда ответит тот, кто знает. Ведь эта ветка форума предназначена именно для предоставления ответов, касающихся BlitzMax'а.
(Offline)
 
Ответить с цитированием
Старый 31.07.2010, 19:06   #21
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,019
Написано 2,312 полезных сообщений
(для 5,349 пользователей)
Ответ: FAQ

Сообщение от DTamaturg Посмотреть сообщение
Пусть тогда ответит тот, кто знает. Ведь эта ветка форума предназначена именно для предоставления ответов, касающихся BlitzMax'а.
Ну вертикальная синхронизация везде одинаковая.
(Offline)
 
Ответить с цитированием
Старый 21.12.2010, 13:42   #22
JeanWinters
Знающий
 
Регистрация: 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
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 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)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ABTOMAT (23.12.2010)
Старый 21.12.2010, 15:22   #24
JeanWinters
Знающий
 
Регистрация: 22.12.2007
Сообщений: 223
Написано 22 полезных сообщений
(для 51 пользователей)
Ответ: FAQ

Т.е. в обоих случаях будет два указателя и один объект (сегмент памяти)?

Еще вопрос: что такое "отражение" и зачем оно нужно. Читал в описании, но еще больше запутался. Не увидел выгоды применения этого подхода. Объясните на простом маленьком примере (можно с кодом).
(Offline)
 
Ответить с цитированием
Старый 21.12.2010, 15:25   #25
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: FAQ

З.Ы. проверить настигает ли объект неминуемый конец от лап жнеца сборщика мусора легко, дописав деструктор, выводящий в дебаг последний крик боли уносящегося в пучину цифрового ада объекта.
__________________
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо SBJoker за это полезное сообщение:
ABTOMAT (23.12.2010), pax (21.01.2011)
Старый 21.12.2010, 15:29   #26
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: FAQ

Сообщение от DTamaturg Посмотреть сообщение
Т.е. в обоих случаях будет два указателя и один объект (сегмент памяти)?
Именно.
Для создания копий надо писать уже метод клонирования.

Сообщение от DTamaturg Посмотреть сообщение
что такое "отражение"
Сам неюзал, но смысл в том чтобы обращаться к объектам по имени, по строковому имени. Т.е. ты неимеешь указателя на объект но он тебе нужен, то можно его получить указав его имя (имя переменной где он лежит).
псевдокод: Local obj:MyType = Reflection.GetVar("SelectedObject")
ну и где то в коде есть переменная с таким именем. Вопщем это как получение объектов в TMap по ключу.
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
ABTOMAT (23.12.2010)
Старый 24.12.2010, 16:45   #27
JeanWinters
Знающий
 
Регистрация: 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
Reks888
Дэвелопер
 
Аватар для Reks888
 
Регистрация: 04.11.2009
Адрес: Украина, Днепропетровск
Сообщений: 1,480
Написано 662 полезных сообщений
(для 1,985 пользователей)
Ответ: FAQ

Да и, вроде если подключить brl.glmax2d, то будет openGL.
Если подключить brl.d3d%7 или 9%max2d, то будет DirectX%7 или 9%.
Если brl.max2d, то подключит в соответствии с операционной системой(DirectX под виндами, OpenGL в линухе и маке)
__________________
>type C:\MyProj\*
www.sypiac.weebly.com
>
(Offline)
 
Ответить с цитированием
Старый 26.12.2010, 16:09   #30
JeanWinters
Знающий
 
Регистрация: 22.12.2007
Сообщений: 223
Написано 22 полезных сообщений
(для 51 пользователей)
Ответ: FAQ

Установка драйвера в соответствии с ОС происходит при запуске исполняемого файла (готовой игры) или определяется уже при компиляции (т.е. зависит от того, в какой системе создавалась игра)?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com