Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [OpenGL] не компилируется в Release, но в Debug компилируется 
:(
    Опции темы
koljan
Дата 8.12.2006, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


VIP
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 18.12.2005
Где: г.Архангельск

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



Код

#include <windows.h>
#include <gl\gl.h>
#include <gl\glu.h>
#include <gl\glaux.h>

static HGLRC hRC;
static HDC hDC;

BOOL keys[256];

GLfloat rtri;
GLfloat rquard;

GLvoid InitGL(GLsizei Width, GLsizei Height)
{
    glClearColor(0.0f,0.0f,0.0f,0.0f);
    glClearDepth(1.0);
    glDepthFunc(GL_LESS);
    glEnable(GL_DEPTH_TEST);
    glShadeModel(GL_SMOOTH);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(45.0f,(GLfloat)Width/(GLfloat)Height,0.1f,100.0f);//************
    glMatrixMode(GL_MODELVIEW);
}

GLvoid ReSizeScene(GLsizei Width,GLsizei Height)
{
    if(Height==0) Height=1;

        glViewport(0,0,Width,Height);
        glMatrixMode(GL_PROJECTION);
        glLoadIdentity();

        gluPerspective(45.0f,(GLfloat)Width/(GLfloat)Height,0.1f,100.0f);
        glMatrixMode(GL_MODELVIEW);
}

GLvoid DrawGLScene(GLvoid)
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glLoadIdentity();
}

LRESULT CALLBACK WndProc(HWND hWnd,UINT message,WPARAM wParam,LPARAM lParam)
     {
        RECT    Screen;         // используется позднее для размеров окна
        GLuint  PixelFormat;
        static  PIXELFORMATDESCRIPTOR pfd=
        {
                sizeof(PIXELFORMATDESCRIPTOR),  // Размер этой структуры
        1,                              // Номер версии (?)
        PFD_DRAW_TO_WINDOW |            // Формат для Окна
        PFD_SUPPORT_OPENGL |            // Формат для OpenGL
        PFD_DOUBLEBUFFER,               // Формат для двойного буфера
        PFD_TYPE_RGBA,                  // Требуется RGBA формат
        16,                             // Выбор 16 бит глубины цвета
        0, 0, 0, 0, 0, 0,                       // Игнорирование цветовых битов (?)
        0,                              // нет буфера прозрачности
        0,                              // Сдвиговый бит игнорируется (?)
        0,                              // Нет буфера аккумуляции
        0, 0, 0, 0,                             // Биты аккумуляции игнорируются (?)
        16,                             // 16 битный Z-буфер (буфер глубины) 
        0,                              // Нет буфера траффарета
        0,                              // Нет вспомогательных буферов (?)
        PFD_MAIN_PLANE,                 // Главный слой рисования
        0,                              // Резерв (?)
        0, 0, 0                         // Маски слоя игнорируются (?)
        };
        switch (message)
        {
        case WM_CREATE:
            hDC=GetDC(hWnd);
            PixelFormat=ChoosePixelFormat(hDC,&pfd);
            if(!PixelFormat)
            {
                MessageBox(0,"что-то не работает с пикселями","error",MB_OK|MB_ICONERROR);
                PostQuitMessage(0);
                break;
            }
            if(!SetPixelFormat(hDC,PixelFormat,&pfd))
            {
                MessageBox(0,"ошипка ","Error",MB_OK|MB_ICONERROR);
                PostQuitMessage(0);
                break;
            }
            hRC=wglCreateContext(hDC);
            if(!hRC)
            {
                MessageBox(0,"error blin","error",MB_OK|MB_ICONERROR);
                PostQuitMessage(0);
                break;
            }
            if(!wglMakeCurrent(hDC, hRC))
                {
                MessageBox(0,"Can't activate GLRC.","Error",MB_OK|MB_ICONERROR);
                PostQuitMessage(0);
                break;
                }
                 GetClientRect(hWnd, &Screen);
                InitGL(Screen.right, Screen.bottom);
                break;
                
                case WM_DESTROY:
                case WM_CLOSE:
                ChangeDisplaySettings(NULL, 0);

                wglMakeCurrent(hDC,NULL);
                wglDeleteContext(hRC);
                ReleaseDC(hWnd,hDC);

                PostQuitMessage(0);
                break;

                case WM_KEYDOWN:
                keys[wParam] = TRUE;
                break;

                case WM_KEYUP:
                keys[wParam] = FALSE;
                break;


                case WM_SIZE:
                 ReSizeScene(LOWORD(lParam),HIWORD(lParam));
                 
                break;

                default:
        return (DefWindowProc(hWnd, message, wParam, lParam));
        }
        return (0);
}

     int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, 
                LPSTR lpCmdLine,int nCmdShow)
{
        MSG             msg;    // Структура сообщения Windows
        WNDCLASS        wc; // Структура класса Windows для установки типа окна
        HWND            hWnd;   // Сохранение дискриптора окна

        wc.style                = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;
        wc.lpfnWndProc          = (WNDPROC) WndProc;
        wc.cbClsExtra           = 0;
        wc.cbWndExtra           = 0;
        wc.hInstance            = hInstance;
        wc.hIcon                = NULL;
        wc.hCursor              = LoadCursor(NULL, IDC_ARROW);
        wc.hbrBackground        = NULL;
        wc.lpszMenuName         = NULL;
        wc.lpszClassName        = "OpenGL WinClass";

        if(!RegisterClass(&wc))
        {
        MessageBox(0,"Failed To Register The Window Class.","Error",MB_OK|MB_ICONERROR);
        return FALSE;
        }
        
        hWnd = CreateWindow(
        "OpenGL WinClass",
        "Utkin Koljan", // Заголовок вверху окна

        WS_POPUP |
        WS_CLIPCHILDREN |
        WS_CLIPSIBLINGS,

        0, 0,                   // Позиция окна на экране
        640, 480,               // Ширина и высота окна

        NULL,
        NULL,
        hInstance,
        NULL);
        
        if(!hWnd)
        {
        MessageBox(0,"Window Creation Error.","Error",MB_OK|MB_ICONERROR); 
                return FALSE;
        }

        DEVMODE dmScreenSettings;                       // Режим работы

memset(&dmScreenSettings, 0, sizeof(DEVMODE));          // Очистка для хранения установок
dmScreenSettings.dmSize = sizeof(DEVMODE);              // Размер структуры Devmode
dmScreenSettings.dmPelsWidth    = 640;                  // Ширина экрана
dmScreenSettings.dmPelsHeight   = 480;                  // Высота экрана
dmScreenSettings.dmFields       = DM_PELSWIDTH | DM_PELSHEIGHT; // Режим Пиксела
ChangeDisplaySettings(&dmScreenSettings, CDS_FULLSCREEN);


ShowWindow(hWnd, SW_SHOW);
        UpdateWindow(hWnd);
        SetFocus(hWnd);


        while (1)
        {
                // Обработка всех сообщений
                while (PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
                {
                        if (GetMessage(&msg, NULL, 0, 0))
                        {
                                TranslateMessage(&msg);
                                DispatchMessage(&msg);
                        }
                        else
                        {
                                return TRUE;
                        }
                }

                 DrawGLScene();                          // Нарисовать сцену
                 // ЗДЕСЬ НАЧИНАЕТСЯ ВТОРОЙ УРОК NeHe**************************************
                 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);  // 2 urok
                 glLoadIdentity();
                 glTranslatef(-1.5f,0.0f,-6.0f);
                 //рисование треугольника
                 glRotatef(rtri,-1.0f,0.0f,0.0f); //смещение точки 
                 glBegin(GL_TRIANGLES);
                    glColor3f(1.0f,0.0f,0.0f);  //Red color
                    glVertex3f(0.0f,1.0f,0.0f); //Вверх
                    
                 
                    glColor3f(0.0f,1.0f,0.0f);  //Green color
                    glVertex3f(-1.0f,-1.0f,1.0f); //слева снизу
                    glColor3f(0.0f,0.0f,1.0f);  //Blue color
                    glVertex3f(1.0f,-1.0f,1.0f);  //справа снизу
                    //правая грань
                    glColor3f(1.0f,0.0f,0.0f);
                    glVertex3f(0.0f,1.0f,0.0f);
                    glColor3f(0.0f,0.0f,1.0f);
                    glVertex3f(1.0f,-1.0f,1.0f);
                    glColor3f(0.0f,1.0f,0.0f);
                    glVertex3f(1.0f,-1.0f,-1.0f);

                    //ещё одна грань
                    glColor3f(1.0f,0.0f,0.0f);
                    glVertex3f(0.0f,1.0f,0.0f);
                    glColor3f(0.0f,1.0f,0.0f);
                    glVertex3f(1.0f,-1.0f,-1.0f);
                    glColor3f(0.0f,0.0f,1.0f);
                    glVertex3f(-1.0f,-1.0f,-1.0f);

                    //левая грань
                    glColor3f(1.0f,0.0f,0.0f);
                    glVertex3f(0.0f,1.0f,0.0f);
                    glColor3f(0.0f,0.0f,1.0f);
                    glVertex3f(-1.0f,-1.0f,-1.0f);
                    glColor3f(0.0f,1.0f,0.0f);
                    glVertex3f(-1.0f,-1.0f,1.0f);
                 glEnd();
                
                 //рисование квадрата**************************************************************
                    glLoadIdentity();
                    glTranslatef(1.5,0.0f,-7.0f);
                    glRotatef(rquard,1.0f,1.0f,1.0f);
                 glBegin(GL_QUADS);

                    glColor3f(0.0f,1.0f,0.0f);
                    glVertex3f(1.0f,1.0f,-1.0f);
                    glVertex3f(-1.0f,1.0f,-1.0f);
                    glVertex3f(-1.0f,1.0f,1.0f);
                    glVertex3f(1.0f,1.0f,1.0f);

                    glColor3f(1.0f,0.5f,0.0f);
                    glVertex3f(1.0f,-1.0f,1.0f);
                    glVertex3f(-1.0f,-1.0f,1.0f);
                    glVertex3f(-1.0f,-1.0f,-1.0f);
                    glVertex3f(1.0f,-1.0f,-1.0f);

                    glColor3f(1.0f,0.0f,0.0f);
                    glVertex3f(1.0f,1.0f,1.0f);
                    glVertex3f(-1.0f,1.0f,1.0f);
                    glVertex3f(-1.0f,-1.0f,1.0f);
                    glVertex3f(1.0f,-1.0f,1.0f);

                    glColor3f(1.0f,1.0f,0.0f);
                    glVertex3f(1.0f,-1.0f,-1.0f);
                    glVertex3f(-1.0f,-1.0f,-1.0f);
                    glVertex3f(-1.0f,1.0f,-1.0f);
                    glVertex3f(1.0f,1.0f,-1.0f);

                    glColor3f(0.1f,0.0f,1.0f);
                    glVertex3f(-1.0f,1.0f,1.0f);
                    glVertex3f(-1.0f,1.0f,-1.0f);
                    glVertex3f(-1.0f,-1.0f,-1.0f);
                    glVertex3f(-1.0f,-1.0f,1.0f);

                    glColor3f(1.0f,0.0f,1.0f);
                    glVertex3f(1.0f,1.0f,-1.0f);
                    glVertex3f(1.0f,1.0f,1.0f);
                    glVertex3f(1.0f,-1.0f,1.0f);
                    glVertex3f(1.0f,-1.0f,-1.0f);

                 glEnd();    

                 rtri+=0.1f;
                 rquard+=0.1f;

        SwapBuffers(hDC);                               // Переключить буфер экрана
        if (keys[VK_ESCAPE]) SendMessage(hWnd,WM_CLOSE,0,0);    // Если ESC - выйти
        if (keys[VK_UP]) rquard+=1.0f;
        if (keys[VK_DOWN]) rquard-=1.0f;
        if (keys[VK_LEFT]) rtri+=1.0f;
        if (keys[VK_RIGHT]) rtri-=1.0f;


      }
}

вот такой код компилируется только в Debug, а когда делаю Release то не компилит, и выдаёт такой список

Цитата

OGL fatal error LNK1120: 19 unresolved externals
OGL error LNK2019: unresolved external symbol _gluPerspective@32 referenced in function "void __cdecl InitGL(int,int)" (?InitGL@@YAXHH@Z)
OGL error LNK2019: unresolved external symbol __imp__glLoadIdentity@0 referenced in function "void __cdecl InitGL(int,int)" (?InitGL@@YAXHH@Z)
OGL error LNK2019: unresolved external symbol __imp__glMatrixMode@4 referenced in function "void __cdecl InitGL(int,int)" (?InitGL@@YAXHH@Z)
OGL error LNK2019: unresolved external symbol __imp__glShadeModel@4 referenced in function "void __cdecl InitGL(int,int)" (?InitGL@@YAXHH@Z)
OGL error LNK2019: unresolved external symbol __imp__glEnable@4 referenced in function "void __cdecl InitGL(int,int)" (?InitGL@@YAXHH@Z)
OGL error LNK2019: unresolved external symbol __imp__glDepthFunc@4 referenced in function "void __cdecl InitGL(int,int)" (?InitGL@@YAXHH@Z)
OGL error LNK2019: unresolved external symbol __imp__glClearDepth@8 referenced in function "void __cdecl InitGL(int,int)" (?InitGL@@YAXHH@Z)
OGL error LNK2019: unresolved external symbol __imp__glClearColor@16 referenced in function "void __cdecl InitGL(int,int)" (?InitGL@@YAXHH@Z)
OGL error LNK2019: unresolved external symbol __imp__glViewport@16 referenced in function "void __cdecl ReSizeScene(int,int)" (?ReSizeScene@@YAXHH@Z)
OGL error LNK2019: unresolved external symbol __imp__glClear@4 referenced in function "void __cdecl DrawGLScene(void)" (?DrawGLScene@@YAXXZ)
OGL error LNK2019: unresolved external symbol __imp__wglDeleteContext@4 referenced in function "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z)
OGL error LNK2019: unresolved external symbol __imp__wglMakeCurrent@8 referenced in function "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z)
OGL error LNK2019: unresolved external symbol __imp__wglCreateContext@4 referenced in function "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndProc@@YGJPAUHWND__@@IIJ@Z)
OGL error LNK2019: unresolved external symbol __imp__glEnd@0 referenced in function _WinMain@16
OGL error LNK2019: unresolved external symbol __imp__glBegin@4 referenced in function _WinMain@16
OGL error LNK2019: unresolved external symbol __imp__glRotatef@16 referenced in function _WinMain@16
OGL error LNK2019: unresolved external symbol __imp__glTranslatef@12 referenced in function _WinMain@16
OGL error LNK2019: unresolved external symbol __imp__glVertex3f@12 referenced in function _WinMain@16
OGL error LNK2019: unresolved external symbol __imp__glColor3f@12 referenced in function _WinMain@16

и ещё не компилит в том случае если ставить в настройках оптимизацию(хоть на размер файла, хоть на скорость)
Прошу совета, как от этого избавиться


--------------------
PM MAIL ICQ   Вверх
empter
Дата 8.12.2006, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фанат
*


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

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



Проверь в релизе либы точно подключил
PM MAIL MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




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


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

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