Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2011, 20:40   #11
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

тоже самое
Поставь в некоторых местах вывод GetLastError()

Последний раз редактировалось Kostia; 21.12.2011 в 20:45.
Kostia вне форума Ответить с цитированием
Старый 21.12.2011, 21:36   #12
Warn
Форумчанин
 
Аватар для Warn
 
Регистрация: 03.11.2011
Сообщений: 230
По умолчанию

Поставил GetLastError() и glGetError где только возможно.
Kostia, если можно полный лог из консоли, что бы понять вследствии чего, такое происходит.
Вложения
Тип файла: rar gl2DLightV3.rar (44.6 Кб, 12 просмотров)
Warn вне форума Ответить с цитированием
Старый 21.12.2011, 22:52   #13
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

Лови лог (для наполняемости поста)
Изображения
Тип файла: jpg log.jpg (52.9 Кб, 91 просмотров)
Kostia вне форума Ответить с цитированием
Старый 21.12.2011, 23:51   #14
Warn
Форумчанин
 
Аватар для Warn
 
Регистрация: 03.11.2011
Сообщений: 230
По умолчанию

по каким-то причинам ошибка возникает во время вызова
pixel_format := ChoosePixelFormat ( hDC, @pixel_format_desc);

Код:
  // Обнуление параметров
	FillChar ( pixel_format_desc, sizeof(PIXELFORMATDESCRIPTOR), 0);

  // Заполнение параметрами
	pixel_format_desc.nSize      := sizeof(PIXELFORMATDESCRIPTOR);
	pixel_format_desc.nVersion   := 1;
	pixel_format_desc.dwFlags    := PFD_DRAW_TO_WINDOW or PFD_SUPPORT_OPENGL or PFD_DOUBLEBUFFER;
	pixel_format_desc.iPixelType := PFD_TYPE_RGBA;
	pixel_format_desc.cColorBits := (redbits + greenbits + bluebits+ alphabits);
	pixel_format_desc.cDepthBits := depthbist;
	pixel_format_desc.cStencilBits := stencilbist;
добавил,
pixel_format_desc.iLayerType := PFD_MAIN_PLANE;
может отсутвие флага всему виной)

так же добавил инициализацию 24-битного режима с 16-ти битным буфером глубины, в случае, если первый вариант не пройдет.
(по умолчанию создается 32 bpp, 24 depth, 8 stencil)
Код:
  if (gl3_init(WindowDC, R, G, B, A, DepthBits, StencilBits) = false) then
    if (gl3_init(WindowDC, 8, 8, 8, 0, 16, 0) = false) then begin

  	WriteLn('Error - gl3_init()');
  	result := False;
    exit;
  end;
У тебя случаем не гибридная графика Intel HD 3000 и Nvidia GT 540M ?
Вложения
Тип файла: rar gl2DLightV4.rar (44.7 Кб, 11 просмотров)

Последний раз редактировалось Warn; 22.12.2011 в 00:18.
Warn вне форума Ответить с цитированием
Старый 23.12.2011, 11:47   #15
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

Тоже самое.

Проверил, в свой двиг запили инициализацию GL3.3, 4.0, 4.1 и 4.2(4.3 не инициализировалась, т.е. все ок).
Вот примерный код:

Код:
void InitOpenGL(){
        PIXELFORMATDESCRIPTOR pfd;

        int iFormat;

        hDC = GetDC(hwnd);

        ZeroMemory(&pfd, sizeof(pfd));

        pfd.nSize = sizeof(pfd);
        pfd.nVersion = 1;
        pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
        pfd.iPixelType = PFD_TYPE_RGBA;
        pfd.cColorBits = BitsPerPixel;
        pfd.cDepthBits = 32;
        pfd.iLayerType = PFD_MAIN_PLANE;

        iFormat = ChoosePixelFormat(hDC, &pfd);

        SetPixelFormat(hDC, iFormat, &pfd);

        hRC = wglCreateContext(hDC);

        wglMakeCurrent(hDC, hRC);

        PFNWGLCREATECONTEXTATTRIBSARBPROC wglCreateContextAttribsARB;
        wglCreateContextAttribsARB = (PFNWGLCREATECONTEXTATTRIBSARBPROC)wglGetProcAddress("wglCreateContextAttribsARB");

        wglMakeCurrent(NULL, NULL);
        wglDeleteContext(hRC);

        if (!wglCreateContextAttribsARB){
                cout << "wglCreateContextAttribsARB fail " << GetLastError() << "\n";
                return;
        }

        int attribs[] ={
                WGL_CONTEXT_MAJOR_VERSION_ARB, 4,
                WGL_CONTEXT_MINOR_VERSION_ARB, 2,
                WGL_CONTEXT_FLAGS_ARB,         WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB,
                WGL_CONTEXT_PROFILE_MASK_ARB,  WGL_CONTEXT_CORE_PROFILE_BIT_ARB,
                0
        };

        hRC = wglCreateContextAttribsARB(hDC, 0, attribs);

        if (!hRC || !wglMakeCurrent(hDC, hRC)){
                cout << "Creating render context fail " << GetLastError() << "\n";
                return;
        }

        //wglMakeCurrent(hDC, hRC);
        return;
    }
Цитата:
У тебя случаем не гибридная графика Intel HD 3000 и Nvidia GT 540M ?
Угу, все так. Но дрова настроены так, чтобы повсеместно использовалась только Nvidia GT 540M
Kostia вне форума Ответить с цитированием
Старый 23.12.2011, 15:40   #16
Warn
Форумчанин
 
Аватар для Warn
 
Регистрация: 03.11.2011
Сообщений: 230
По умолчанию

Интересно. может всему виной битность буфера глубины cDepthBits, я задавал 24 бита, а ты 32, притом что я попробовал свою запустить с 32-мя битами глубины - получил ошибку при создании контекста, а у тебя наверное тоже самое происходит с 24-ю битами глубины.

поэтому решил сделать выборку несколько иначе...
Код:
  // Найти формата пикселя
  //pixel_format := ChoosePixelFormat ( hDC, @pixel_format_desc);
  pixel_format := 0;
  i:= 1;

  while (DescribePixelFormat(hDC,i, sizeof(PIXELFORMATDESCRIPTOR), pixel_format_desc) = True) do begin
    if (pixel_format_desc.iPixelType = PFD_TYPE_RGBA) then
    if ((pixel_format_desc.dwFlags and PFD_DRAW_TO_WINDOW) <> 0) then
    if ((pixel_format_desc.dwFlags and PFD_SUPPORT_OPENGL) <> 0) then
    if ((pixel_format_desc.dwFlags and PFD_DOUBLEBUFFER) <> 0) then
    if (pixel_format_desc.cColorBits = (redbits + bluebits + greenbits + alphabits))  then
    if (pixel_format_desc.cDepthBits >= depthbist)  then
      if (pixel_format_desc.cStencilBits >= stencilbist) then begin
        pixel_format := i;
        break;
      end;
    inc(i);
  end;
если не затруднит, на лог хотелось бы вновь взглянуть)
Вложения
Тип файла: rar gl33test.rar (44.7 Кб, 10 просмотров)
Warn вне форума Ответить с цитированием
Старый 23.12.2011, 16:52   #17
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

ChoosePixelFormat = 9
ColorBits = 32
DepthBits = 24
StencilBits = 8
GetLastError (After ChoosePixelFormat()) = 0
GetLastError (After SetPixelFormat()) = 0
GetLastError (After load_lib()) = 0
GetLastError (After load_wgl_procs()) = 0
GetLastError (After wglCreateContext) = 2000
wglCreateContext( hDC= 3254850047 ) = 0
GetLastError (After wglMakeCurrent) = 0
Error - create fake open gl context
Error - gl3_init()
Kostia вне форума Ответить с цитированием
Старый 23.12.2011, 17:05   #18
Warn
Форумчанин
 
Аватар для Warn
 
Регистрация: 03.11.2011
Сообщений: 230
По умолчанию

Kostia, в твоей процедуре InitOpenGL()
iFormat = ChoosePixelFormat(hDC, &pfd);
тоже 9й? (iFormat = 9?)
Warn вне форума Ответить с цитированием
Старый 23.12.2011, 20:02   #19
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

Нет, он у меня 7ми равен.
Kostia вне форума Ответить с цитированием
Старый 23.12.2011, 22:42   #20
Warn
Форумчанин
 
Аватар для Warn
 
Регистрация: 03.11.2011
Сообщений: 230
По умолчанию

Сделал самое гениальное что мог - ручной ввод формата (номера)
потом добавил gl-nop перед первой выборкой формата и повторное SetPixelFormat и wglCreateContext в случае первого провала wglCreateContext.
Надеюсь 7й на этот раз заведется)
Вложения
Тип файла: rar gltest.rar (46.3 Кб, 17 просмотров)
Warn вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа для проверки (правильности кода). Контекст. AmbaQ Софт 4 14.11.2010 16:50
Контекст устройства. Основы работы с изображением Claster Win Api 1 03.04.2010 00:26
BitBlt на контекст DC и его альтернатива notHaker Мультимедиа в Delphi 7 03.12.2009 01:04
Контекст воспроизведения OpenGL Gerzs Мультимедиа в Delphi 5 23.11.2009 11:33
Контекст воспроизведения OpenGL Sergeevich Gamedev - cоздание игр: Unity, OpenGL, DirectX 6 08.11.2009 21:50