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=13864)

den 09.12.2010 21:26

Вопросы по Xna
 
Вот накопилось несколько вопросов:
1) В шейдерах переменные цвета хранятся в float4. Как из кода передать в шейдер такую переменную (параметр), ведь в C# нет типа float4?
2) Как сделать шейдер во весь экран. Тоесть чтоб эффект был на всём экране? Тоесть чтоб вершинами были 4 угла экрана игры.
3) Как нарисовать круг? если циклом for и формулой то это я знаю:)
4) Есть ли какойнибуть плагин, чтоб при редактировании шейдера была хоть какаято подсветка? А лучше чтоб какиенибуть фичи. Типо первые буквы набираеш, а он слова всякие выдаёт подходящие (как в самом C#)

pax 09.12.2010 22:12

Ответ: Вопросы по Xna
 
Вложений: 1
1) Vector4, Color?
2) Единичный квад без приведения к экранному пространству в шейдере.
3) а как ты еще хочешь? Отрендери диск, смоделенный в максе.
4) NShader, InteliShade (на xnadev.ru был в разделе файлы)

den 09.12.2010 22:35

Ответ: Вопросы по Xna
 
Спасибо!
Ещё вопросик, точнее 2:
1) Создал простой шейдер. Внутри техники шейдера, в файле .cs с помощью метода GraphicsDevice.DrawUserPrimitives рисую примитив. Как сделать его сглаженым, тоесть чтобы не было "лесинки"?
2) Как задать ширину линии? Толщину точки нашол, а линии нет:)

pax 09.12.2010 22:36

Ответ: Вопросы по Xna
 
Не помню чтобы в Wareframe можно было менять толщину линий. А по поводу лесенки: включай FSAA.

pax 09.12.2010 22:39

Ответ: Вопросы по Xna
 
По шейдерам для XNA есть неплохой тутор
http://rutracker.org/forum/viewtopic.php?t=927912

den 12.12.2010 23:36

Ответ: Вопросы по Xna
 
Вопрос не по Xna, да и не по C#.
Как изменить язык программирования по умолчанию в VS 2008?:)
Тоесть когда создаёш проект, окно выбора такое:
+[Язык по умолчанию]
+[Другие языки]

pax 13.12.2010 00:33

Ответ: Вопросы по Xna
 
Думаю разберешься где жать далее )

den 13.12.2010 21:39

Ответ: Вопросы по Xna
 
Так, ещё вопрос:
со всеми вопросами пока разобрался кроме одного:
Цитата:

2) Как сделать шейдер во весь экран. Тоесть чтоб эффект был на всём экране? Тоесть чтоб вершинами были 4 угла экрана игры.
Вобщем pax дал какойто нёх код, но я не опйму как им пользоватся.:(
Вод допустим шейдер инверсии.


PHP код:

void VS(
        
in float4 inPos  POSITION
        
in float4 inColor COLOR0,
 
        
out float4 outPos POSITION,
        
out float4 outColor COLOR0 )
{
        
outPos inPos;
 
        
inColor.rgb inColor.rgb;
        
outColor inColor;
}
 
 
technique Technique0
{
        
pass P0
        
{
                
vertexShader compile vs_2_0 VS();
        }




как сделать чтоб он работал на весь экран ? Куда его засунуть?:)

pax 13.12.2010 22:19

Ответ: Вопросы по Xna
 
Порядок такой:
  • Cоздать экземпляр класса FullScreenQuad который я дал.
  • Установить эффект (шейдер) текущим.
  • Установить P0 текущим пассом.
  • У экземпляра класса FullScreenQuad вызывать Draw.
  • Закрыть пасс.
  • Закрыть эффект.

Только проблема в том, что шейдер твой инвертирует цвет рисуемого квада (т.е. цвет его вершин). И результат наверно будет черный экран.
Чтобы тебе сделать постобработку, тебе надо в шейдер передать текстуру и инвертировать ее цвет в пиксельном шейдере и уш точно не в вершинном. Т.е. сцену надо рендерить в текстуру. А потом ее использовать.

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


В итоге должно получиться что-то вроде:
  • Ставим текстуру целью визуализации
  • Рендерим сцену в текстуру
  • Ставим целью визуализации экран
  • Cоздать экземпляр класса FullScreenQuad который я дал (можно где-то один раз как SpriteBatch).
  • Установить эффекту текстуру сцены.
  • Установить эффект (шейдер) текущим.
  • Установить P0 текущим пассом.
  • У экземпляра класса FullScreenQuad вызывать Draw.
  • Закрыть пасс.
  • Закрыть эффект.

den 01.01.2011 14:35

Ответ: Вопросы по Xna
 
Разобрался:)
Вобщем я написал 2 класса: полноэкранный эфект, и FSAA. Очень просто в обращении. Если комуто надо нопишете, выложу:)
А теперь следующий вопрос: как записать звук с микрофона (необязательно в файл, можно просто в память) и работать с ним (воспроизвести, выдрать кусок, обратить) Вобщем я даже низнаю если такое в Xna или .Net фраемворке. Если нет, то есть ли библиотека?

pax 01.01.2011 15:19

Ответ: Вопросы по Xna
 
Я честно тоже не знаю.
Возможно поможет http://gamedev.stackexchange.com/que...nd-data-in-xna

den 01.01.2011 18:51

Ответ: Вопросы по Xna
 
Всё, проблема решена. Нашол подходящую библиотеку.
NAudio
Качаем от суда.
там сама библа, исходник, а также 4 примера.
А вот здесь годный урок.

cherepets 25.10.2011 12:21

Ответ: Вопросы по Xna
 
Здравствуйте, тоже хочу по XNA задать вопрос.
Подключил .Input.Touch, сделал всё что студия потребовала (перечислил необходимые мне жесты, а пока это только Pinch, сделал проверку на TouchPanel.IsGestureAvailable).
Но TouchPanel.IsGestureAvailable всегда false.

Какие могут быть идеи?

pax 25.10.2011 12:52

Ответ: Вопросы по Xna
 
Не уверен, что у кого-то есть WP чтобы такое проверить...

cherepets 25.10.2011 12:56

Ответ: Вопросы по Xna
 
Это не WP, мне на настолке нужно.

pax 25.10.2011 13:04

Ответ: Вопросы по Xna
 
А что тогда за тач панель?

cherepets 25.10.2011 13:06

Ответ: Вопросы по Xna
 


Ну, или MS Surface, или сенсорный моноблок (коих с виндой сейчас довольно много).

pax 25.10.2011 13:32

Ответ: Вопросы по Xna
 
Это практически одно и тоже, вряд ли у кого есть подобный девайс.

Dream 25.10.2011 13:33

Ответ: Вопросы по Xna
 
http://msdn.microsoft.com/ru-ru/libr...put.touch.aspx

cherepets 25.10.2011 13:48

Ответ: Вопросы по Xna
 
Как-то этот код запутаннее, но спасибо, буду пробовать =)
Выходит жестов для настольной винды не предусмотрено?

Dream 25.10.2011 14:35

Ответ: Вопросы по Xna
 
Вот тут ничего не могу сказать. TouchPanel XNA 4.0 у меня по крайней мере не получали жестов на вин7, хотя заявлена в потдержке

cherepets 25.10.2011 14:42

Ответ: Вопросы по Xna
 
Так я тоже на msdn'овских форумах прочитал, что надо делать через тачПанель.

Наверное Pinch можно отловить как прокрутку колеса мыши. Ведь мультитачевый пинч внезапно работает в играх, вышедших задолго до появления ПК с сенсорными экранами (Age of Wonders, Heroes of Might and Magic V и StarCraft2, например, позволяют зуммировать карту). Думаю, что дело именно в том, что они воспринимают данный жест как прокрутку колесика.

Драг можно и самому реализовать без проблем. А вот что делать со всякими там твистами?

Dream 26.10.2011 13:09

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

Сообщение от cherepets (Сообщение 206903)
Наверное Pinch можно отловить как прокрутку колеса мыши. Ведь мультитачевый пинч внезапно работает в играх, вышедших задолго до появления ПК с сенсорными экранами (Age of Wonders, Heroes of Might and Magic V и StarCraft2, например, позволяют зуммировать карту). Думаю, что дело именно в том, что они воспринимают данный жест как прокрутку колесика.

не знаю как насчёт magic V, но в старкрафт возможно сами разрабы добавили возможность точпанели(если посмотреть на системные требования - они какраз подлазят под требования точпанели).
Также вариант что винда действительно сама эмулирует скролл при пинче, что совсем не исключено оглядываясь на то как мелкомягкие стараются с потдержкой всяких игр.

cherepets 26.10.2011 23:24

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

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

Правда есть другая проблема: почему-то иногда "вождение" пальцем по экрану порождает только перемещение курсора, а иногда перемещение курсора при зажатой левой кнопке (чаще).

cherepets 31.10.2011 00:45

Ответ: Вопросы по Xna
 
Ничего у меня с примером по ссылке не вышло. Можешь объяснить просто: как узнать есть ли касание?

Всем остальным такой вопрос: как вы проверяете клик мышью? Я в переменной храню прошлое состояние мыши. Если переходит из Pressed в Released, то срабатывает.

cherepets 09.12.2011 17:57

Ответ: Вопросы по Xna
 
Помогите, пожалуйста. Откуда у меня берется синева тут:



Вроде вообще неоткуда взяться же:
Код:


       

protectedoverridevoid Draw(GameTime gameTime)

        {

            GraphicsDevice.Clear(

Color.Black);

           

Matrix[] transforms = newMatrix[mdl.Bones.Count];

            mdl.CopyAbsoluteBoneTransformsTo(transforms);

           

foreach (ModelMesh mesh in mdl.Meshes)

            {

               

foreach (BasicEffect effect in mesh.Effects)

                {

                    effect.World = transforms[mesh.ParentBone.Index] *

                       

Matrix.CreateRotationY(anglx) * Matrix.CreateRotationX(angly);

                    effect.View =

Matrix.CreateLookAt(newVector3(0, 0, 10), Vector3.Zero, Vector3.Up);

                    effect.Projection =

Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45.0f), graphics.GraphicsDevice.Viewport.AspectRatio, 1.0f, 10000.0f);

                }

                mesh.Draw();

            }

           

base.Draw(gameTime);

        }


Dream 09.12.2011 18:04

Ответ: Вопросы по Xna
 
хм.. попробуй выставить параметры BasicEffect effect. типа DiffuseColor и прочие. Может AmbientLightColor ещё стоит. в общем покрути настроййки эффекта.а и ещё, вершинам цвет точно не задан?

cherepets 09.12.2011 18:08

Ответ: Вопросы по Xna
 
Да я вроде все уже перековырял. Есть подозрение, что моделька не совсем верно экспортировалась...

Dream 09.12.2011 18:10

Ответ: Вопросы по Xna
 
просто на скрине я вон смотрю у тебя в скечере стоит цвет материала синий

cherepets 09.12.2011 18:22

Ответ: Вопросы по Xna
 
Не понял как его убрать в самом скетче, ибо совсем отключить цвет материала нельзя, но если в уже готовом *.Х файле блокнотом вписать 1.0;1.0;1.0;1.0;; вместо тех цветов, что там стоят, то все правильно отрисовывается =)

Спасибо

Dream 09.12.2011 18:26

Ответ: Вопросы по Xna
 
Ну я думаю если поставить просто белый цвет то будет тоже самое

cherepets 09.12.2011 18:32

Ответ: Вопросы по Xna
 
И правда. Только сам скетчап при этом показывает чисто белый куб.

pax 09.12.2011 19:41

Ответ: Вопросы по Xna
 
Выбери метод отрисовки, не использующий цвета вершин.

Dream 09.12.2011 19:51

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

Сообщение от pax (Сообщение 213288)
Выбери метод отрисовки, не использующий цвета вершин.

Ну, в ХНА4 у бейсик эффекта есть проперти VertexColorEnabled. но не факт что там именно вершины покрашены


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

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