На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела "Программирование графики"
1) Данный раздел предназначен для обсуждения проблем, возникающих при программировании задач, связанных с чтением, сохранением, обработкой, созданием, отрисовкой графической информации (в том числе - 3D [OpenGL, Direct3D] и анимации [в т.ч. VFW, DirectShow, OpenDML]).
Флэш обсуждают здесь!.

2) Если вы хотите получить совет для конкретной платформы/языка программирования, обязательно укажите их в вопросе.

3) Уважаемые новички! Мы приветствуем Ваше желание научить всех посетителей раздела правильному программированию. Но огромная просьба, перед тем, как писать поучения в старых (последний ответ - "старее" месяца, а особенно, если вопрошавший не появляется на форуме уже не первый месяц, в чем можно убедиться в его профиле) темах, хорошо подумать, будет ли кому-нибудь, кроме Вас cамих, это интересно.



Ваше мнение о модераторах: user posted imageBarazuk, user posted imageOpenGL, user posted imageMikle
Модераторы: OpenGL, Mikle
  
> Ошибка при работе с OpenGL , При создании шейдерной программы вылезает ошибка
    Я хочу научиться работать и уметь создавать динамические библиотеки, а так же развивать свои знания по OpenGL.
    По работе я создал(частично взял готовый класс, из различных кинг и туториалов) классы для работы с шейдерами, текстурами, мешами и т.д. Собирал это все как обычный статический проект в Visual studio 2012. Все работало, где-то криво, где-то хорошо. Меня все устраивало. Возможностей хватало и все работало без сбоев.
    Для работы и инициализации OpenGL я использовал библиотеку glew ( так же рассматривал GLLoadGen). Для статического проекта использовал статическую сборку glew.
    Решил я научиться создавать и работать с динамическими библиотеками. Взял свой проект и добавил в него следующее
    ExpandedWrap disabled
      #if !defined(PROJECTNAME_STATIC)
          #define PROJECTNAME_API_EXPORT __declspec(dllexport)
          #define PROJECTNAME_API_IMPORT __declspec(dllimport)
       
          #pragma warning(disable: 4251)
       
      #else
          #define GLEW_STATIC
       
              #define PROJECTNAME_API_EXPORT
              #define PROJECTNAME_API_IMPORT
      #endif
       
      #if defined(PROJECTNAME_EXPORTS)
       
          #define PROJECTNAME_API PROJECTNAME_API_EXPORT
       
      #else
       
          #define PROJECTNAME_API PROJECTNAME_API_IMPORT
       
      #endif

    В проекте где создается библиотека в препроцессоре поставил PROJECTNAME_EXPORTS.
    Ну и проекте убираю когда надо PROJECTNAME_STATIC. glew то же собираю как динамическую библиотеку.
    В debug режиме вылезает вот такая ошибка:
    Unhandled exception at 0x771DC6D1 in test.exe: 0xC0000005: Access violation executing location 0x00000000.
    в следующей строчке при создании шейдерной программы:
    ExpandedWrap disabled
       if( this->ShaderProgramHandele <= 0 )
              {
                  this->ShaderProgramHandele = glCreateProgram();
                  if( this->ShaderProgramHandele == 0) {
                      throw СGLSLProgramException("Unable to create shader program.");
                  }
              }


    Не могу понять почему при использовании статической библиотеки все в порядке, а при динамической вылезает вот такая ошибка.
    Благодарю за внимание.
    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script execution time: 0,0218 ]   [ 15 queries used ]   [ Generated: 28.03.24, 23:43 GMT ]