Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с DIRECTX и C# 
:(
    Опции темы
Empirik
Дата 28.11.2005, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 156
Регистрация: 28.10.2005
Где: Россия, Пермь

Репутация: нет
Всего: 1



Я пытаюсь что либо вывести при помощи Microsoft.DirectX.Direct3D.Sprite на экран

Главный девайс я создаю следующим образом
Код

        public bool InitializeGraphics()
        {
            try
            {

                PresentParameters presentParams = new PresentParameters();
                presentParams.Windowed=true;
                presentParams.SwapEffect = SwapEffect.Discard;
                presentParams.BackBufferHeight=this.Height;
                presentParams.BackBufferWidth=this.Width;
                presentParams.BackBufferFormat=Manager.Adapters.Default.CurrentDisplayMode.Format;
                presentParams.PresentationInterval=PresentInterval.Immediate;
                device = new Device(0, DeviceType.Hardware, this, CreateFlags.HardwareVertexProcessing, presentParams);
                this.OnCreateDevice(device, null);
                return true;
            }
            catch (DirectXException)
            { 
                return false; 
            }
        }



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

Код

dxSprite=new Sprite(dev);            
texture=new Texture(dev,(Bitmap)Bitmap.FromFile("imageForSrc.png"),0,Pool.Managed);


B процедуре вывода графики пытаюсь вывестети текстуру на экран, но ни чего не отображается
Код

 if(device==null)
 {
    return;
 }
 dxSprite.Begin(SpriteFlags.AlphaBlend);
 dxSprite.Draw2D(texture,new Point(0,0),0,new Point(0,0),Color.White);
 dxSprite.Flush();
dxSprite.End();


Показывается просто пустая форма. Если у кого есть исходники, демонстрирующие использование спрайтов на DirectX то выложите пожалуйста. В семпласах которые идут вместе с DirectX ни чего нету.
smile



Это сообщение отредактировал(а) Empirik - 28.11.2005, 21:22
--------------------
Постоянно удивляюсь человеческой фантазии напридумывают гаджетов
PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 28.11.2005, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Как насчёт освещения ? smile
Свет надо бы добавить, иначе ничего не будет видно.


--------------------
user posted image
PM MAIL WWW   Вверх
Empirik
Дата 29.11.2005, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 156
Регистрация: 28.10.2005
Где: Россия, Пермь

Репутация: нет
Всего: 1



Цитата(mr @ 28.11.2005, 22:40)
Как насчёт освещения ? smile
Свет надо бы добавить, иначе ничего не будет видно.

На спрайты свет не очень сильно влияет.
Дело вовсе не в этом в третьем часу ночи добил выесняется что код процедуры отрисовки должен выглядеть следующим образом
Код

            if(device==null)
            {
                return;
            }
            device.BeginScene();
            state.Capture();
            device.Clear(ClearFlags.Target, /*System.Drawing.Color.Black,*/
                System.Drawing.Color.Violet, 1.0f, 0);
            dxSprite.Begin(SpriteFlags.AlphaBlend);
            dxSprite.Draw(texture,Rectangle.Empty ,new Vector3(0,0,0),new Vector3(10,20,0),Color.White);            
            dxSprite.End();
            state.Apply();
            device.EndScene();
            device.Present();

state - это экземпляр класса StateBlock. Если ктонибуть может объяснить зачем он нужем расскажите пожалуйста

--------------------
Постоянно удивляюсь человеческой фантазии напридумывают гаджетов
PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 29.11.2005, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Судя по тому, что мне удалось найти в документации по SDK, StateBlock - это класс, позволяющий сохранять и восстанавливать т.н. RenderState - текущий набор настроек рендеринга. С пом. RenderState задаются такие параметры, как туман, вид смешивания (blending), разрешён или нет Z-буфер и пр.

В данном конкретном случае в самом начале вызывается метод Capture, сохраняющий тек. настройки в некое временное хранилище, из которого они восстанавливаются вызовом метода Apply.


--------------------
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0443 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.