Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.08.2010, 13:36   #1
Radical_Edward
Пользователь
 
Аватар для Radical_Edward
 
Регистрация: 05.08.2010
Сообщений: 33
По умолчанию Managed DirectX troubles(C#)

Не актуально

Последний раз редактировалось Radical_Edward; 06.08.2010 в 11:34. Причина: Проблема решена
Radical_Edward вне форума Ответить с цитированием
Старый 05.08.2010, 14:14   #2
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Возможно свет слишком интенсивный... А вообще вот это
Код:
   device.Lights[0].Position = new Vector3();
мне очень не нравится... Где инициализация? Какое положение у источника?
Ещё: как вы можете пытаться делать освещение треугольника с вращением не имея нормалей (они кстати у вас в формте-то указаны: PositionNormalColored)? Зря закомментировали. Они используются при расчете освещенности.
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 05.08.2010, 14:58   #3
Radical_Edward
Пользователь
 
Аватар для Radical_Edward
 
Регистрация: 05.08.2010
Сообщений: 33
По умолчанию

Попробовал исправить : проблема не в этом. Если разкомментировать нормалт, то треугольник получается одноцветным.
Radical_Edward вне форума Ответить с цитированием
Старый 05.08.2010, 15:09   #4
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Покажите объявление формата вершин.
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 05.08.2010, 15:15   #5
Radical_Edward
Пользователь
 
Аватар для Radical_Edward
 
Регистрация: 05.08.2010
Сообщений: 33
По умолчанию

Вообще - то это весь код за исключением Main, где ничего ценного не содержится
Radical_Edward вне форума Ответить с цитированием
Старый 05.08.2010, 15:26   #6
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

А CustomVertex где объявлено? А вообще если работаете с освещением юзайте материалы.
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 06.08.2010, 19:45   #7
Radical_Edward
Пользователь
 
Аватар для Radical_Edward
 
Регистрация: 05.08.2010
Сообщений: 33
По умолчанию

Сегодня возникла иная проблема, а именно с текстурированием. Почему - то, при отображении, моя фигура просто - напросто черного цвета.
Хотя текстура загружается и освещение отключено.
Код:
        public void InitializeGraphics()
        {
            this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.Opaque, true);

            // Set our presentation parameters
            presentParams = new PresentParameters();
            presentParams.Windowed = true;
            presentParams.SwapEffect = SwapEffect.Discard;

            // Create our device
            device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, presentParams);
            device.RenderState.CullMode = Cull.CounterClockwise;//Параметры прозрачности
            device.RenderState.Lighting = false;//убираем освещение
            vb = new VertexBuffer
                                (
                                typeof(CustomVertex.PositionTextured),
                                36, 
                                device, 
                                Usage.Dynamic| Usage.WriteOnly,
                                CustomVertex.PositionTextured.Format, 
                                Pool.Default
                                );
            tex1 = TextureLoader.FromFile(device,"E:\\1.jpg");
            vb.Created += new EventHandler(this.OnVertexBufferCreate);
            device.DeviceResizing += new CancelEventHandler(this.CancelResize); 
            OnVertexBufferCreate(vb, null);
        }

private void DrawBox(float yaw, float pitch, float roll, float x, float y, float z, Texture t)
        {
            angle += 0.01f;

            device.Transform.World = Matrix.RotationYawPitchRoll(yaw, pitch, roll) * Matrix.Translation(x, y, z);
            device.SetTexture(0, t);
            device.DrawPrimitives(PrimitiveType.TriangleList, 0, 12);
        }

protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)//Перерисовка.
        {
            device.Clear(ClearFlags.Target, System.Drawing.Color.White, 1.0f, 0);//Jчищаем экран
            SetupCamera();//устанавливаем камеру

            device.BeginScene();//рисуем нашу фигуру

             angle = System.Environment.TickCount / 450.0f;
            device.VertexFormat = CustomVertex.PositionColored.Format;//Формат вершин
            device.SetStreamSource(0, vb, 0);
            device.DrawPrimitives(PrimitiveType.TriangleList, 0, 12);
            DrawBox(angle / (float)Math.PI, angle / (float)Math.PI / 2.0f, angle / (float)Math.PI *4.0f, 5.0f, 0.0f, 0.0f, tex1);
            DrawBox(angle / (float)Math.PI, angle / (float)Math.PI * 4.0f, angle / (float)Math.PI /2.0f, -5.0f, 0.0f, 0.0f, tex2);

            device.EndScene();

            device.Present();

            this.Invalidate();//Перерисовка формы

            
        }
 private void OnVertexBufferCreate(object sender, EventArgs e) //Создание нашего куба...(координаты и т.п)
        {
            VertexBuffer buffer = (VertexBuffer)sender;
            CustomVertex.PositionTextured[] verts = new CustomVertex.PositionTextured[36];

            // Front face
            verts[0] = new CustomVertex.PositionTextured(-1.0f, 1.0f, 1.0f, 0.0f, 0.0f);
            verts[1] = new CustomVertex.PositionTextured(-1.0f, -1.0f, 1.0f, 0.0f, 1.0f);
//...и так далее в том же духе
buffer.SetData(verts, 0, LockFlags.None);
        }
Radical_Edward вне форума Ответить с цитированием
Старый 06.08.2010, 21:16   #8
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Где у вас SetTextureStageState настраивается? Это процедура настройки использования текстур и ещё кой-чего... И уверены ли вы что света нет?..
И вообще, что это за надстройка над ДХ? Это ведь не голый API, так? Периодически стремные ф-ии проскакивают...
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 06.08.2010, 22:01   #9
Radical_Edward
Пользователь
 
Аватар для Radical_Edward
 
Регистрация: 05.08.2010
Сообщений: 33
По умолчанию

Цитата:
Сообщение от Selestis Посмотреть сообщение
И вообще, что это за надстройка над ДХ? Это ведь не голый API, так? Периодически стремные ф-ии проскакивают...
Что вы имели ввиду?

У меня есть два рабочих примера(один, правда, сделан с другим VertexFormat), ни в одном из которых нет ни слова о SetTextureStageState

Код:
device.RenderState.Lighting = false;
Разве не эта строка отвечает за отключку освещения?
Radical_Edward вне форума Ответить с цитированием
Старый 06.08.2010, 22:57   #10
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

А, вы же на Managed DX пишете... Я что-то подумал, что на обычном. Там кажись другие немного операции, вот и коё-чего нет... Боюсь я вам тогда помочь не смогу, придется ждать кого-то ещё.
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DirectX и С++ mrandrey Общие вопросы C/C++ 2 24.08.2009 14:46
DirectX Doom4eg Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 06.08.2008 13:08
big troubles with winsock joker Работа с сетью в Delphi 3 28.09.2007 23:16