forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   С# (http://forum.boolean.name/forumdisplay.php?f=128)
-   -   Вопросы по XNA. (http://forum.boolean.name/showthread.php?t=16854)

Nikich 02.06.2012 13:24

Ответ: Вопросы по XNA.
 
Хм. А можно как-нибудь посмотреть, как это в Максе сделано? Ведь там это дело быстрее, чем в XNA.
И еще. Раз вывод картинки все равно происходит благодаря шейдерам, то почему в Максе нельзя с ними работать?

radiobutton 02.06.2012 14:18

Ответ: Вопросы по XNA.
 
Цитата:

Сообщение от Nikich (Сообщение 229232)
Хм. А можно как-нибудь посмотреть, как это в Максе сделано? Ведь там это дело быстрее, чем в XNA.
И еще. Раз вывод картинки все равно происходит благодаря шейдерам, то почему в Максе нельзя с ними работать?

Цитата:

Давайте отвлечемся на минутку от игростроения и поговорим о языке высокоуровневых шейдеров - High Level Shader Language (HLSL). До появления XNA DirectX посылать свои инструкции графическому устройству с помощью механизма, называемого Fixed Function Pipeline (FFP). Но этот механизм работал для простых графических карт, но со временем сложность аппаратных ресурсов все больше возрастала. От FFP требовали соответствия возросшим возможностям аппаратного обеспечения.

Даже на современных видеокартах FFP применяется как шейдер. И по своему действию этот механизм похож на эффект BasicEffect.

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

Nikich 02.06.2012 15:36

Ответ: Вопросы по XNA.
 
Нет, что-то не так.
В террарии, которая сделанна на XNA, у меня было 60 фпс. Когда я делал на максе Виво с видом сбоку, выдавало 80 фпс. Из моего теста следует, что при 100 картинках разница между максом и XNA в 300 фпс. В проектах же, картинок куда больше чем 100.Размеры картинок в Террарии и в Виво одни и те же(16х16). А значит, что проблема в чем-то другом.

radiobutton 02.06.2012 15:55

Ответ: Вопросы по XNA.
 
Цитата:

Сообщение от Nikich (Сообщение 229241)
Нет, что-то не так.
В террарии, которая сделанна на XNA, у меня было 60 фпс. Когда я делал на максе Виво с видом сбоку, выдавало 80 фпс. Из моего теста следует, что при 100 картинках разница между максом и XNA в 300 фпс. В проектах же, картинок куда больше чем 100.Размеры картинок в Террарии и в Виво одни и те же(16х16). А значит, что проблема в чем-то другом.

в XNA ограничение на фпс в 60 стоит же.:)

Nikich 02.06.2012 16:05

Ответ: Вопросы по XNA.
 
Так я его снял, чтобы проверить сколько фпс. Возможно я его не так снял:)

radiobutton 02.06.2012 16:15

Ответ: Вопросы по XNA.
 
Цитата:

Сообщение от Nikich (Сообщение 229243)
Так я его снял, чтобы проверить сколько фпс. Возможно я его не так снял:)

я на счет того что
Цитата:

В террарии, которая сделанна на XNA, у меня было 60 фпс.

Nikich 02.06.2012 16:21

Ответ: Вопросы по XNA.
 
Я это к тому, что разница должна быть больше чем на 300 фпс, а разница только на 20.
Так что вопрос еще актуален.

Nikich 03.06.2012 00:22

Ответ: Вопросы по XNA.
 
Хотя я подумал, пока что это не важно. Если меньше 60 выдавать будет, то буду переживать, а пока 2000 тоже хватит.
Появилась идея для игры. И тут как раз нужен шейдер.
У кого-нибудь есть пример самого простого шейдера для XNA? Например, шейдер, который будет цвет каждого пикселя делать ярче, или темнее.

Dream 03.06.2012 01:17

Ответ: Вопросы по XNA.
 
както вы странно тестите. вот сейчас запусти те два кода и фпс -
BlitzMax - ~1500
XNA - ~2300

Shaders - http://forums.create.msdn.com/forums/t/27849.aspx

по поводу разрешения экрана - GraphicsDevice.Adapter.CurrentDisplayMode
и не забываем - после операций сграфикосом или девайсом лучше сделать ApplyChanges

Nikich 03.06.2012 01:43

Ответ: Вопросы по XNA.
 
А картинки какие брал?
UPD
Сегодня я кое-что вспомнил. В Максе ведь есть команды GetPixel WritePixel. А значит, на нем можно писать пиксельные шейдеры?

radiobutton 03.06.2012 14:16

Ответ: Вопросы по XNA.
 
Цитата:

Сообщение от Nikich (Сообщение 229299)
А картинки какие брал?
UPD
Сегодня я кое-что вспомнил. В Максе ведь есть команды GetPixel WritePixel. А значит, на нем можно писать пиксельные шейдеры?

Нет. Шейдеры обрабатываются в графическом процессоре, который специально организован чтобы выполнять операции с векторами за 1 такт.
А те команды что ты привел больше похожи на обычные вин апи функции, которые очень долгие:)

moka 03.06.2012 17:55

Ответ: Вопросы по XNA.
 
Цитата:

Сообщение от radiobutton (Сообщение 229321)
Нет. Шейдеры обрабатываются в графическом процессоре, который специально организован чтобы выполнять операции с векторами за 1 такт.
А те команды что ты привел больше похожи на обычные вин апи функции, которые очень долгие:)

Т.к. выполняются на уровне CPU. И не имеют того конвеера который имеет шейдер, для интерполяции данных и т.п.

Nikich 03.06.2012 22:30

Ответ: Вопросы по XNA.
 
Е-е-е. Видимо я нашёл в чем была проблема. Скорее всего, это было связано с тем, что я всё время создавал новый вектор2.

new Vector2(player_position.X + i * 256, player_position.Y + i1 * 256)

Это строчка работает крайне медленно. Сейчас решил вывести всё в нулевых координатах. Результат - XNA превосходит Макс на 40 фпс.
Но это привело к следующий проблеме: так как тогда выводить картинки? Есть ли какая-нибудь замена вектор2?

radiobutton 03.06.2012 23:02

Ответ: Вопросы по XNA.
 
Цитата:

Сообщение от Nikich (Сообщение 229367)
Е-е-е. Видимо я нашёл в чем была проблема. Скорее всего, это было связано с тем, что я всё время создавал новый вектор2.

new Vector2(player_position.X + i * 256, player_position.Y + i1 * 256)

Это строчка работает крайне медленно. Сейчас решил вывести всё в нулевых координатах. Результат - XNA превосходит Макс на 40 фпс.
Но это привело к следующий проблеме: так как тогда выводить картинки? Есть ли какая-нибудь замена вектор2?

Не хочу разочеровывать, но Vector2.Zero это тоже самое, что new Vector2(0,0) :-D

Мб вся проблема в том, что в максе те картинки что ты рисуешь за экраном просто не рисуются?:)

Vector2 это структура, тоесть тип значения. Что может быть еще быстрее хз. А выделение памяти для 2 переменных типа float происходит так быстро что ппц.

Nikich 03.06.2012 23:08

Ответ: Вопросы по XNA.
 
Нет. Оно не рисуется не в XNA, не в Max'e. Это легко заметить, если выдвинуть картинки за экран - фпс увеличивается в разы.


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

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