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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Импортировать функцию, чтобы она была не static 
V
    Опции темы
explorer
  Дата 6.10.2009, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Доброго времени суток! 
Подскажите, пожалуйста, как быть и что делать в такой ситуации. Использую в шарпе OpenGL (через UserControl содержащий импортированные функции из opengl32.dll и т.п.)
Все было хорошо, пока в проекте использовался один такой контрол. Но теперь понадобилось их несколько, и я столкнулся с убийственной проблемой. Дело в том, что импорт OpenGL функций происходит так:

Код

...
[DllImport("opengl32.dll", SetLastError=true)] public static extern System.IntPtr wglGetCurrentContext();
[DllImport("opengl32.dll")] public static extern void glBindTexture(uint target, uint texture);
...


Очевидно, что класс мой получается статическим. Естественно, при размещении двух экземпляров этого класса на одной форме один рисует "за двоих", а второй показывает квадрат Малевича. 


Вопрос. Как-нибудь можно импортировать функции так, чтобы они не были static? Либо как-то хитро пошаманить над всем классом, чтобы он не содержал static-метдов?

Добавлено через 12 минут и 48 секунд
А, уже додумался smile Все просто оказалось...
В каждом классе перед рендерингом поверхности нужно принудительно сбрасывать контекст и заново его устанавливать. Тогда наш static контекст всегда будет актуальным, если рендеринг проходит в одном потоке. 
--------------------
 
PM MAIL WWW ICQ   Вверх
nmn
Дата 7.10.2009, 01:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



нужно импортировать функции в отдельный класс, который будет статическим
Код

public static OpenGlFunctions
{
[DllImport("opengl32.dll", SetLastError=true)] public static extern System.IntPtr wglGetCurrentContext();
[DllImport("opengl32.dll")] public static extern void glBindTexture(uint target, uint texture);
}

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

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


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

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


 




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


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

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