Модераторы: Rickert

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> С чего начать - C# + OpenGL 
:(
    Опции темы
arilou
Дата 25.9.2007, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


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

Репутация: 6
Всего: 61



Цитата(NightmareZ @  24.9.2007,  20:46 Найти цитируемый пост)

Дык, как бы, оно и используется. 

Смутила реализация. Обычно делается так:

Код

class A : IDisposable
{
    bool _isDisposed = false;
   
    public void Dispose()
    {
          // dispose of unmanaged resources here
          _isDisposed = true;
     }

     ~A()
     {
          if(!_isDisposed)
               Dispose();
     }
}



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


[хакер]
**


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

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



Цитата(arilou @ 25.9.2007,  15:19)
Цитата(NightmareZ @  24.9.2007,  20:46 Найти цитируемый пост)

Дык, как бы, оно и используется. 

Смутила реализация. Обычно делается так:

Код

class A : IDisposable
{
    bool _isDisposed = false;
   
    public void Dispose()
    {
          // dispose of unmanaged resources here
          _isDisposed = true;
     }

     ~A()
     {
          if(!_isDisposed)
               Dispose();
     }
}

У меня вместо _isDisposed идёт проверка, равны ли dc и hrc нулю, и, если не равны, то освобождаются. Вводить лишнюю переменную тут нет смысла.

Если же ещё больше придираться, то деструктор тут вообще нехорошо использовать. Потому что он скорее всего вызовется после того, как будет закрыто окно.... и вызовется ReleaseDC.... для dc, которого уже нет.

Наверное, стоит в конструктор передавать не Handle окна, а ссылку на экземпляр Form, чтоб класс рендера смог заюзать обработчик OnClosing формы для удаления dc как раз перед тем, как окно будет закрыто.


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
arilou
Дата 15.10.2007, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


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

Репутация: 6
Всего: 61



Цитата(NightmareZ @  15.10.2007,  20:38 Найти цитируемый пост)
и вызовется ReleaseDC.... для dc, которого уже нет.

это верно только для Windows Forms, т.к. там куча костылей сделана для того, чтобы не утекали GDI ресурсы.
Цитата(NightmareZ @  15.10.2007,  20:38 Найти цитируемый пост)
Наверное, стоит в конструктор передавать не Handle окна, а ссылку на экземпляр Form, чтоб класс рендера смог заюзать обработчик OnClosing формы для удаления dc как раз перед тем, как окно будет закрыто. 

А вот это верно! Так и надо, т.к. handle может меняться.


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
NightmareZ
Дата 15.10.2007, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


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

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



Цитата(arilou @  15.10.2007,  22:27 Найти цитируемый пост)
это верно только для Windows Forms, т.к. там куча костылей сделана для того, чтобы не утекали GDI ресурсы.

Всмысле?


Цитата(arilou @  15.10.2007,  22:27 Найти цитируемый пост)
А вот это верно! Так и надо, т.к. handle может меняться.

Каким это образом может меняться handle окна?


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
arilou
Дата 16.10.2007, 09:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Великий МунаБудвин
****


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

Репутация: 6
Всего: 61



Цитата(NightmareZ @  15.10.2007,  23:38 Найти цитируемый пост)
Всмысле?

В смысле, посмотри Reflector'ом что делает великолепный класс HandleCollector, вроде так называется. В Windows Forms для защиты от дурака (читай "программиста, не вызывающего Dispose у контролов и форм") есть примочка. Она сама освобождает хэндлы, если этого не сделать.

Цитата(NightmareZ @  15.10.2007,  23:38 Найти цитируемый пост)
Каким это образом может меняться handle окна? 

Про событие RecreatingWindowHandle не слышал? Если ты скрываешь окно, то насколько я помню, оно освобождает хэндл. 

ЗЫ. Это мы уже в оффтопике, если есть вопросы, пиши в ПМ.


--------------------
user posted imageuser posted image
PM WWW ICQ   Вверх
galileopro
Дата 7.6.2009, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Помогите разобраться кто-нибудь
я попытался скомпилировать код NightmareZ и наткнулся на следующие ошибки

Error    1    The type or namespace name 'Tao' could not be found (are you missing a using directive or an assembly reference?)    C:\Documents and Settings\Admin\Мои документы\Visual Studio 2008\Projects\OpenGLforC\OpenGLforC\Form1.cs    

Error    2    The type or namespace name 'Tao' could not be found (are you missing a using directive or an assembly reference?)    C:\Documents and Settings\Admin\Мои документы\Visual Studio 2008\Projects\OpenGLforC\OpenGLforC\Form1.cs    

В чем тут дело?
PM MAIL WWW ICQ   Вверх
RWander
Дата 7.6.2009, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 4.5.2006
Где: Russia.Udm.Izhevs k

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



скорее всего у тебя не установлен Tao framework (нет необходмых dll-ок в GAC). 


--------------------
Microsoft Certified Technology Specialist - ASP.NET Applications
PM MAIL   Вверх
galileopro
  Дата 5.7.2009, 03:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А вот вам еще одна реализация текстуры
Код
private void Coord(int number, double x, double y, double z)
        {
            string File;
            int size=16;
            File = "Texture"+number.ToString()+".bmp";
            byte[, ,] Bits = new byte[size, size, 3];
            Gl.glEnable(Gl.GL_TEXTURE_2D);
            Bitmap bitmap = new Bitmap(File);
            for (int i = 0; i <= size-1; i++)
                for (int j = 0; j <= size-1; j++)
                {
                    Bits[i, j, 0] = bitmap.GetPixel(i, j).R;
                    Bits[i, j, 1] = bitmap.GetPixel(i, j).G;
                    Bits[i, j, 2] = bitmap.GetPixel(i, j).B;
                }

            Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0,
                            Gl.GL_RGB, size, size, 0,
                            Gl.GL_RGB, Gl.GL_UNSIGNED_BYTE, @Bits);
            Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR);
            Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);

            Gl.glPushMatrix();
            Gl.glRotated(-90, 0, 0, 1);
            Gl.glTranslated(-1.0+y/450, -1.0+x/450, z/450);

            Gl.glBegin(Gl.GL_QUADS);

            Gl.glTexCoord2d(0.0, 1.0);
            Gl.glVertex2d(0, 1);

            Gl.glTexCoord2d(0.0f, 0.0f);
            Gl.glVertex2d(0, 0);

            Gl.glTexCoord2d(1.0, 0.0f);
            Gl.glVertex2d(1, 0);

            Gl.glTexCoord2d(1.0f, 1.0f);
            Gl.glVertex2d(1, 1);

            Gl.glEnd();
            Gl.glPopMatrix();
            Gl.glFlush();
        }


PM MAIL WWW ICQ   Вверх
anvi
Дата 9.8.2009, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



про работу c ogl в C# можно почитать здесь: OpenGL C#

правда там только заполняется ресурс и инфа для начинающих, но в принципе ее уже немало  smile 
PM MAIL GTalk   Вверх
RWander
Дата 9.8.2009, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 4.5.2006
Где: Russia.Udm.Izhevs k

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



anvi,  smile 


--------------------
Microsoft Certified Technology Specialist - ASP.NET Applications
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

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

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




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


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

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