Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Кто-нибудь работал с Direct3D Mobile?  (Прочитано 8403 раз)
0 Пользователей и 1 Гость смотрят эту тему.
jur
Помогающий

lt
Offline Offline

« : 14-05-2011 20:50 » new

Привет!

Начал осваивать Windows Embedded CE 6.0 R3, которую планируется устанавливать на небольшую PC-совместимую материнку в приборе. От производителей получил готовый образ WinCE на карточке (NK.BIN) и SDK для разработки приложений. (Разработку/адаптацию самой WinCE пока не делаю, пользуюсь готовым образом.)

Наша прежняя приборная программа базируется на DirectX, поэтому я первым делом решил проверить работу Direct3D Mobile. Скомпилировал и запустил шесть туторных примеров (те, что "TUT0n_XXX"). Все они нормально работают. Тогда я стал экспериментировать с "TUT03_MATRICES" и столкнулся с проблемой: не могу нарисовать два треугольника вместо одного (мне нужно рисовать несколько разных объектов, поэтому я для начала попробовал просто два отдельных треугольника). Я немножко модифицировал функцию "SetupMatrices", чтобы она могла сдвигать мировую матрицу по осям X, Y. Вот код рендера:

Код:
    // Begin the scene
    if( SUCCEEDED( g_pd3dmDevice->BeginScene() ) )
    {
        // Setup the world, view, and projection matrices
        SetupMatrices( -1.0f, 1.0f); // Shift by x = -1, y = 1
       
        // Render the vertex buffer contents
        g_pd3dmDevice->SetStreamSource( 0, g_pVB, sizeof(CUSTOMVERTEX) );
        g_pd3dmDevice->DrawPrimitive( D3DMPT_TRIANGLELIST, 0, 1 );

//!!!!  SetupMatrices( 1.0f, -1.0f);
        g_pd3dmDevice->DrawPrimitive( D3DMPT_TRIANGLELIST, 0, 1 );

        // End the scene
        g_pd3dmDevice->EndScene();
    }

В таком виде все работает. Но стоит мне раскомментировать второй вызов "SetupMatrices" - и все, не работает, даже клиентская часть окна не обновляется (в ней остается картинкка десктопа).

Помогите, пожалуйста, разобраться с этой проблемой!

P.S. Окружение:

1. Рабочий компьютер: Windows XP, MS Visual Studio 2005, SDK для разработки приложений.
2. Целевая система: Windows CE 6.0, Direct3D Mobile.

Компилирую программу на рабочем компьютере, записываю на флешку и запускаю на целевой системе.
Записан

MPEG-4 - в массы!
baldr
Команда клуба

cy
Offline Offline
Пол: Мужской
Дорогие россияне


WWW
« Ответ #1 : 16-05-2011 07:20 » 

jur, немного настораживают слова "Я немножко модифицировал функцию "SetupMatrices"".
Это выглядит как в анекдоте "я его только стукнул молотком, а он почему-то перестал работать"..
Намек понятен?
Записан

Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
jur
Помогающий

lt
Offline Offline

« Ответ #2 : 16-05-2011 08:22 » 

"я его только стукнул молотком, а он почему-то перестал работать"..
Намек понятен?

Так я-ж совсем чуть-чуть! Улыбаюсь

Я просто добавил вот этот код:

Код:
    {
      D3DMXMATRIX matTrans;
      D3DMXMatrixTranslation( &matTrans, x_shift, y_shift, 0.0f );
      D3DMXMatrixMultiply( &matWorld, &matWorld, &matTrans );
    }

В чем дело - ума не приложу...

Прикрепляю архив с полным файлом отличий оригинального текста и моего ("matrices_diff.htm").

А также оба EXE-шника. В хорошем файле второй вызов "SetupMatrices" закомментирован (Win CE 6.0 R3, x86).


Добавлено через 1 день, 23 часа, 20 минут и 25 секунд:
А хочу я получить всего-навсего вот это:



Улыбаюсь


Добавлено через 9 дней, 9 часов, 44 минуты и 45 секунд:
Если проблема не решается, то тогда скажите, пожалуйста, повторяется ли дефект на вашей Windows Embedded CE с Direct3D Mobile? Может это только у меня такие проблемы? (Архив с файлами прикреплен к предыдущему посту.)

* matrices_diff.zip (11.58 Кб - загружено 824 раз.)
* matrices_good_bad.zip (32.4 Кб - загружено 801 раз.)
« Последнее редактирование: 27-05-2011 17:27 от jur » Записан

MPEG-4 - в массы!
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines