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

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

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2013, 14:14   #1
LOST94
Пользователь
 
Регистрация: 13.05.2009
Сообщений: 47
По умолчанию DirectX не отображается текстура

Создаю точки вот так:

Код:
vertexes = new Direct3D.CustomVertex.TransformedTextured[4];
            // top-left vertex:
            vertexes[0].X = 50;
            vertexes[0].Y = 50;
            vertexes[0].Z = 0.0f;
            vertexes[0].Tu = 0.0f;
            vertexes[0].Tv = 0.0f;
            // top-right vertex:
            vertexes[1].X = 114;
            vertexes[1].Y = 50;
            vertexes[1].Z = 0.0f;
            vertexes[1].Tu = 1.0f;
            vertexes[1].Tv = 0.0f;

            // bottom-left vertex:
            vertexes[2].X = 50;
            vertexes[2].Y = 114;
            vertexes[2].Z = 0.0f;
            vertexes[2].Tu = 0.0f;
            vertexes[2].Tv = 1.0f;
Загружаю текстуру так:
Код:
texture = Direct3D.TextureLoader.FromFile(
                graphics, "green.jpg", 0, 0, 0, 0, Direct3D.Format.Unknown,
                Direct3D.Pool.Managed, Direct3D.Filter.Linear,
                Direct3D.Filter.Linear, 0);
И вывожу это на экран:
Код:
graphics.Clear(Direct3D.ClearFlags.Target, Color.White, 1.0f, 0);
                        graphics.BeginScene();
                        graphics.SetTexture(0, texture);
                        graphics.VertexFormat = Direct3D.CustomVertex.TransformedTextured.Format;
                        graphics.DrawUserPrimitives(
                        Direct3D.PrimitiveType.TriangleList, 1, vertexes);
                        graphics.EndScene();
                        graphics.Present();
Вместо треугольника с картинкой у меня отображается треугольник, закращенный одним цветом . Что странно, этот цвет - левый верхний пиксел выводимой картинки green.jpg. (проверено опытным путем - менял один пиксел и менялся цвет треугольника после запуска, на цвет этого пиксела)

Я так подозреваю, проблемы в том, что у меня учебник 2004 года, а Direct SDK 2009-го, и видимо формат загрузки изменился? Помогите пожалуйста, я просто в тупике
LOST94 вне форума Ответить с цитированием
Старый 24.06.2013, 17:05   #2
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Попробуйте вместо
Цитата:
texture = Direct3D.TextureLoader.FromFile(
graphics, "green.jpg", 0, 0, 0, 0, Direct3D.Format.Unknown,
Direct3D.Pool.Managed, Direct3D.Filter.Linear,
Direct3D.Filter.Linear, 0);
поставить
Код:
Direct3D.Format.R8G8B8
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 24.06.2013, 18:07   #3
LOST94
Пользователь
 
Регистрация: 13.05.2009
Сообщений: 47
По умолчанию

Не помогло =( Также выводит треугольник цвета верхнего левого угла картинки, вместо самой картинки.

Сейчас дальше стал читать, попробовал еще вывод спрайта на основе этой же текстуры - получилось(правда, не в том месте, где ожидалось :D но это еще поразбираю), значит картинку нормально считывает. Но с текстурой по-прежнему тупик.
LOST94 вне форума Ответить с цитированием
Старый 24.06.2013, 20:24   #4
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Вы явно не проставили какие-то параметры текстуре. Или способу её вывода. Попробуйте так:
Код:
g_pd3dDevice->SetTexture(0, g_pTexture);

g_pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP,  D3DTOP_SELECTARG1);
g_pd3dDevice->SetTextureStageState(0, D3DTSS_COLORARG1,D3DTA_TEXTURE);
Код на С++, но сути это не меняет.
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 25.06.2013, 10:30   #5
LOST94
Пользователь
 
Регистрация: 13.05.2009
Сообщений: 47
По умолчанию

Код:
graphics.Clear(Direct3D.ClearFlags.Target, Color.White, 1.0f, 0);
                        graphics.BeginScene();
                        graphics.SetTexture(0, texture);
                        graphics.SetTextureStageState(0, Direct3D.TextureStageStates.ColorOperation, (int)Direct3D.TextureOperation.SelectArg1);
                        graphics.SetTextureStageState(0, Direct3D.TextureStageStates.ColorArgument1, (int)Direct3D.TextureArgument.TextureColor);


                        graphics.VertexFormat = Direct3D.CustomVertex.TransformedTextured.Format;
                        graphics.DrawUserPrimitives(
                        Direct3D.PrimitiveType.TriangleList, 1, vertexes);
                        graphics.EndScene();
                        graphics.Present();
Я правильно перевел эти строчки в c#? Если да, то тоже не помогло, тот же одноцветный треугольник показывает (
LOST94 вне форума Ответить с цитированием
Старый 25.06.2013, 17:37   #6
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Загадка... Вот похоже ваш случай: http://stackoverflow.com/questions/1...-when-rendered
и похоже ваша же книжка с примерами) Чувак в конце перешел на SlimDX и всё вроде стало ОК.
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 26.06.2013, 21:45   #7
hellokol
Новичок
Джуниор
 
Регистрация: 18.09.2012
Сообщений: 2
По умолчанию

Посмотрите здесь:
http://mdxc.nm.ru/p005.htm там есть пример.

Попробуйте так:
...
Код:
texture = TextureLoader.FromFile(graphics, "green.jpg");
...
Код:
graphics.VertexFormat = CustomVertex.PositionTextured.Format;
hellokol вне форума Ответить с цитированием
Старый 10.07.2013, 23:08   #8
LOST94
Пользователь
 
Регистрация: 13.05.2009
Сообщений: 47
По умолчанию

Наконец-то добрался до компьютера с DirectX С Вашими добавлениями кода все равно не заработало, но сайт шикарен, и оттуда у меня работают проекты ) Спасибо!
LOST94 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OpenGl текстура saggy Мультимедиа в Delphi 8 25.05.2012 22:59
DirectX Вроде бы все по феншую, но нифига не отображается. WarHamster Visual C++ 0 14.04.2012 01:39
Сайт не отображается в IE и Opera. Отображается только в FireFox. Roman_K HTML и CSS 3 03.02.2011 22:32
Красивая текстура ZvEr_HaCkEr Свободное общение 4 05.01.2011 10:20
Прозрачная текстура Miha85193 Компоненты Delphi 0 29.03.2010 12:34