Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> OpenGL into Win32API, integration 
:(
    Опции темы
mimo
  Дата 13.10.2005, 13:50 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











мне нужно создать 3d объекты с помощью OpenGL, а затем использовать их в дальнейшем создании проекта на win32api. Может у кого есть работающие примеры на эту тему. Подкиньте или еще лучше литературу посоветуйте где найти в инете smile
  Вверх
Emantuohtiw
Дата 14.10.2005, 06:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 13.10.2005
Где: The sky where I g o to be free

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



Код

//=============================================================================

#include "../inc/aOpenGL.h"
#include "../inc/aLog.h"

//=============================================================================

extern HWND h_Wnd;
extern HGLRC hRC;
extern HDC hDC;
extern aOpenGL wogl;
extern aLog logo;

//=============================================================================

LRESULT CALLBACK WndProc(HWND hWnd, unsigned int message, WPARAM wParam, LPARAM lParam)
{
    unsigned int pixelFormat;
    PIXELFORMATDESCRIPTOR pfd = 
    {
        sizeof(PIXELFORMATDESCRIPTOR),
        1,
        PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER,
        PFD_TYPE_RGBA,
        24,
        0, 0, 0, 0, 0, 0,
        0,
        0,
        0,
        0, 0, 0, 0,
        32,
        0,
        0,
        PFD_MAIN_PLANE,
        0,
        0, 0, 0
    };

    switch(message)
    {
        case WM_CREATE:
            h_Wnd = hWnd;
            hDC = GetDC(hWnd);
            pixelFormat = ChoosePixelFormat(hDC, &pfd);
            if (!pixelFormat)
            {
                logo.log("Can't Choose Pixel Format");
                PostQuitMessage(0);
                break;
            }
            if (!SetPixelFormat(hDC, pixelFormat, &pfd))
            {
                logo.log("Can't Set Pixel Format");
                PostQuitMessage(0);
                break;
            }
            hRC = wglCreateContext(hDC);
            if (!hRC)
            {
                logo.log("Can't Create OpenGL Rendering Context");
                PostQuitMessage(0);
                break;
            }
            if (!wglMakeCurrent(hDC, hRC))
            {
                logo.log("Can't Call Thread Of Current Rendering Context");
                PostQuitMessage(0);
                break;
            }
            wogl.initGL();
            break;
        case WM_DESTROY:
        case WM_CLOSE:
            ChangeDisplaySettings(0, 0);
            wglMakeCurrent(hDC, 0);
            wglDeleteContext(hRC);
            ReleaseDC(hWnd, hDC);
            PostQuitMessage(0);
            break;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
            break;
    }
    return 0;
}

//=============================================================================

int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, char* lpCmdLine, int cmdShow)
{
    MSG msg;
    WNDCLASS wc;
    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 = 0;
    wc.hCursor = LoadCursor(0, IDC_ARROW);
    wc.hbrBackground = 0;
    wc.lpszMenuName = 0;
    wc.lpszClassName = "wglClass";

    if (!RegisterClass(&wc))
    {
        logo.log("Can't Register Window Class");
        return 0;
    }

    hWnd = CreateWindow("wglClass", "Bsedian se le Nek", WS_POPUP | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, 0, 0, 800, 600, 0, 0, hInstance, 0);
    
    if (!hWnd)
    {
        logo.log("Can't Create Window");
        return 0;
    }

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

    while (1)
    {
        while(PeekMessage(&msg, 0, 0, 0, PM_NOREMOVE))
        {
            if (GetMessage(&msg, 0, 0, 0))
            {
                TranslateMessage(&msg);
                DispatchMessage(&msg);
            }
            else
                return 1;
        }

        wogl.drawGLScene();
        SwapBuffers(hDC);
    }
}

В классе aOpenGL, соответственно идёт работа с OGL'ом.
PM ICQ   Вверх
Tror
Дата 21.10.2005, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 29.4.2005
Где: Кишинёв

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



Зайди на сайт pmg.org.ru.
там есть переводы уроков NeHe и ещё
много всякой инфы по OpenGL. smile
--------------------
Не говори всегда что знаешь, но знай всегда что говоришь. /Клавдий/============================================Кто может -- тот делает. Кто не может... тот получает сертификат MCSE ;)
PM MAIL ICQ   Вверх
Гость_Сергей
Дата 12.12.2005, 05:20 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Не работают игрушки, выдается сообщение не библиотеки AOpengl
  Вверх
Fixin
Дата 12.12.2005, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

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



Цитата
Не работают игрушки, выдается сообщение не библиотеки AOpengl
Это вопрос по теме, или ты вольный дух сети, занесенный роком поисковика?
Если первый вариант, то AOpengl, в данном случае, класс, в котором
Цитата(Emantuohtiw @ 14.10.2005, 07:33)
идёт работа с OGL'ом.


PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


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

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


 




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


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

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