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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> С# с DirectX и OpenGL, можно ли совместить эти библиотеки и C#? 
V
    Опции темы
KaraKum
  Дата 5.4.2008, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

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



Доброе время суток.
У меня такой вопрос: можно ли совместить библиотеки DirectX и OpenGL (использовать их) в языке C#?
И если да, то как? Особенно интересует OpenGL. 
PM MAIL WWW   Вверх
mr.DUDA
Дата 5.4.2008, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Поиск по форуму дал:
http://forum.vingrad.ru/forum/index.php?showtopic=16965


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


********
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 2.5.2005
Где: Москва

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



Цитата(KaraKum @  5.4.2008,  19:13 Найти цитируемый пост)
можно ли совместить библиотеки DirectX и OpenGL (использовать их)

Смотря что понимается под "использовать". Ведь это же две полностью разделенные системы рендеринга, которые рендерят в 2 разных окна (в одно нельзя). Общих ресурсов быть не может, т.е. будет две копии одной текстуры, например


--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
zaver
Дата 5.4.2008, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 15.8.2005

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



Цитата(WERITAS @ 5.4.2008,  20:12)
Цитата(KaraKum @  5.4.2008,  19:13 Найти цитируемый пост)
можно ли совместить библиотеки DirectX и OpenGL (использовать их)

Смотря что понимается под "использовать". Ведь это же две полностью разделенные системы рендеринга, которые рендерят в 2 разных окна (в одно нельзя). Общих ресурсов быть не может, т.е. будет две копии одной текстуры, например

к чему это?
KaraKum пользуйся поиском
PM MAIL WWW ICQ Skype YIM MSN   Вверх
KaraKum
  Дата 5.4.2008, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

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



Цитата(WERITAS @ 5.4.2008,  20:12)
Цитата(KaraKum @  5.4.2008,  19:13 Найти цитируемый пост)
можно ли совместить библиотеки DirectX и OpenGL (использовать их)

Смотря что понимается под "использовать". Ведь это же две полностью разделенные системы рендеринга, которые рендерят в 2 разных окна (в одно нельзя). Общих ресурсов быть не может, т.е. будет две копии одной текстуры, например

С помощью двух библиотек рендерить в одно окно нельзя - я знаю, но я имел в виду использование полезных возможностей двух библиотек, например, рендерить через OpenGL, а использовать арифметику матриц, векторов и так далее от DirectX. Да и вообще по-отдельности, то есть тут скорее тогда два вопроса: Можно ли испольлзовать OpenGL при программировании на C#? и Можно ли использовать DirectX с C#?

Цитата

Поиск по форуму дал:
http://forum.vingrad.ru/forum/index.php?showtopic=16965

Читал эту тему, но там подразумевается не OpenGL, а CsGL.
PM MAIL WWW   Вверх
zaver
Дата 5.4.2008, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 15.8.2005

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



в XNA математика такая же страшная что и в Managed DirectX. Но так как MDX больше не поддерживается, то лучше использовать XNA. Правда для этого придется ставить xna framework дополнительно к .net framework.
PM MAIL WWW ICQ Skype YIM MSN   Вверх
Dennnis
Дата 5.4.2008, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 23.3.2008

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



taoframework библиотека которая позволяет использовать OpenGL в .NET.
--------------------
Get Rich or Die Tryin'
PM   Вверх
mr.DUDA
Дата 6.4.2008, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(zaver @  5.4.2008,  22:52 Найти цитируемый пост)
в XNA математика такая же страшная что и в Managed DirectX.

Чем это она страшная ?

 smile 


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


********
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 2.5.2005
Где: Москва

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



Цитата(KaraKum @  5.4.2008,  21:36 Найти цитируемый пост)
но я имел в виду использование полезных возможностей двух библиотек, например, рендерить через OpenGL, а использовать арифметику матриц, векторов и так далее от DirectX.

Внимательней читайте приведенные ответы: 
Цитата(WERITAS @  5.4.2008,  20:12 Найти цитируемый пост)
Общих ресурсов быть не может, т.е. будет две копии одной текстуры, например 

Не имеет смысла хранить текстуру и в GL и в DX. В 2 раза больше памяти потребуется.


--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
KaraKum
  Дата 6.4.2008, 09:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

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



Цитата(Dennnis @ 5.4.2008,  22:59)
taoframework библиотека которая позволяет использовать OpenGL в .NET.

Спасибо. Скачал  smile .

А с помощью чего вообще посоветуете win32-проги писать: с C++ и WinAPI (MFC -  smile ) или с C# и .NET Framework?
C# как язык удобнее, мне кажется, чем C++, но большинство библиотек пишутся под С++, да и я ни разу не замечал, чтобы, например, игры писали с C#.
PM MAIL WWW   Вверх
WERITAS
Дата 6.4.2008, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 2.5.2005
Где: Москва

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



Цитата(KaraKum @  6.4.2008,  09:41 Найти цитируемый пост)
А с помощью чего вообще посоветуете win32-проги писать: с C++ и WinAPI (MFC -   ) или с C# и .NET Framework?

Всё зависит от конкретно-поставленной цели. К примеру, системы рендеринга (вроде OGRE) пишутся на С++.

Цитата(KaraKum @  6.4.2008,  09:41 Найти цитируемый пост)
игры писали с C#. 

Вбейте в поисковике "XNA" и наслаждайтесь динамично растущим списком  smile 



--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
zaver
Дата 6.4.2008, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 15.8.2005

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



Цитата(mr.DUDA @ 6.4.2008,  09:12)
Цитата(zaver @  5.4.2008,  22:52 Найти цитируемый пост)
в XNA математика такая же страшная что и в Managed DirectX.

Чем это она страшная ?

 smile

ну для меня работа с матрицами не такая уж очевидная. например я не могу перемножить, разделить итп две матрицы 4х4 в голове.  например по вектору 1х3 нахождение матрицы 3х3 которая отвечает плоскости, которая будет перпендикулярна этому вектору. или например например по вектору1 1х3, вектору2 1х3 и углу альфа найти матрицу 3х3, при умножении на которую вектор1 повернется на угол альфа вокруг вектора2.
всему этому соответствуют функции в XNA.


Это сообщение отредактировал(а) zaver - 6.4.2008, 11:19
PM MAIL WWW ICQ Skype YIM MSN   Вверх
mr.DUDA
Дата 6.4.2008, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



zaver, по порядку:

Цитата(zaver @  6.4.2008,  11:16 Найти цитируемый пост)
я не могу перемножить, разделить итп две матрицы 4х4 в голове

Matrix умножается/делится на др. матрицу обычными операторами * и /

Цитата(zaver @  6.4.2008,  11:16 Найти цитируемый пост)
апример по вектору 1х3 нахождение матрицы 3х3 которая отвечает плоскости, которая будет перпендикулярна этому вектору.

Плоскость задаётся стр-рой Plane. Если нужна матрица вращения от вектора -UnitZ к вектору 1x3 (или кватернион), тогда конечно нужно своё писать:

Код
        /// <summary>Gets the shortest arc quaternion to rotate this vector to the destination vector.
        /// Vectors don't need to be normalized (this will normalize them before doing calculation.</summary>
        /// <remarks>
        ///        Don't call this if you think the dest vector can be close to the inverse
        ///        of this vector, since then ANY axis of rotation is ok.
        ///    </remarks>
        static public Quaternion GetRotationTo(Vector3 v0, Vector3 v1)
        {
            // normalize both vectors 
            v0.Normalize();
            v1.Normalize();
            return GetRotationToNormalized(ref v0, ref v1);
        }
        /// <summary>Gets the shortest arc quaternion to rotate this vector to the destination vector.
        /// ASSUMES Vectors are already Normalized.  If not, then call "GetRotationTo()" instead.</summary>
        /// <remarks>
        ///        Don't call this if you think the dest vector can be close to the inverse
        ///        of this vector, since then ANY axis of rotation is ok.
        ///    </remarks>
        static public Quaternion GetRotationToNormalized(ref Vector3 nV0, ref Vector3 nV1)
        {
            // Based on Stan Melax's article in Game Programming Gems
            // get the cross product of the vectors
            Vector3 c;
            Vector3.Cross(ref nV0, ref nV1, out c);

            // If the cross product approaches zero, we get unstable because ANY axis will do
            // when v0 == -v1
            float d;
            Vector3.Dot(ref nV0, ref nV1, out d);

            if(d >= 1.0f)
            {
                // If dot == 1, vectors are the same
                return Quaternion.Identity;
            }
            else if(d <= -1.0f)
            {
                // If dot == -1, vectors are exact opposite directions.  Favor a 180 along the Yaw Axis
                return new Quaternion(0, 1, 0, 0); // Yaw = 180
            }
            float s = MathUtil.Sqrt((1 + d) * 2);
            float inverse = 1 / s;

            Quaternion q = new Quaternion(c.X * inverse, c.Y * inverse, c.Z * inverse, s * 0.5f);
            return q;
        }



Цитата(zaver @  6.4.2008,  11:16 Найти цитируемый пост)
или например например по вектору1 1х3, вектору2 1х3 и углу альфа найти матрицу 3х3, при умножении на которую вектор1 повернется на угол альфа вокруг вектора2

Два действия:
Код
Quaternion rotation = Quaternion.CreateFromAxisAngle(Vector3.Normalize(vector2), alpha);
vector1 = Vector3.Transform(vector1, rotation);


 smile 


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


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 15.8.2005

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



блин. я не о том как это просто реализуется в С#! @$%$! 
когда я говорил жесткая математика я имел ввиду жесткие математические вычисления. попробуй сделать эти операции карандашиком на листочке. хотя бы для матрицы 3х3. загнешся;) а в шарпе это две строчки кода. как-будто я не ясно написал, что в шарпе это просто реализуется;). так вот все мои предыдущие посты (для тех кто не понял) восхваляют простоту работы с матрицами в шарпе.
PM MAIL WWW ICQ Skype YIM MSN   Вверх
mr.DUDA
Дата 7.4.2008, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



zaver, ну раз так то ладно, проехали.  smile 


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

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


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

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


 




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


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

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