Модераторы: Rickert
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Инициализация OpenGL, Без glx, wgl, mesa итп 
:(
    Опции темы
smalcom
  Дата 9.3.2008, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Вопрос такой. Как мне в голой консоли инициализировать видеокарту без расширений специфичных для ОС.


--------------------
What DA F...???
PM MAIL WWW Skype Jabber   Вверх
WERITAS
Дата 10.3.2008, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


********
**


Профиль
Группа: Участник
Сообщений: 582
Регистрация: 2.5.2005
Где: Москва

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



Доброго времени суток.
Немного не ясен вопрос. В консоли нельзя рисовать, или вы о чём-то другом?


--------------------
Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак"
PM MAIL   Вверх
smalcom
Дата 10.3.2008, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ммм, сейчас попробую показать на примере.

1.переключаем видеокарту в нужный режим
2.вызываем какую нибудь функцию, к примеру glGetString(GL_VERSION)

в результате все без ошибок, но и без результатно. А вся соль в том, что между пунктами 1 и 2 библиотеке OpenGL нужно указать куда рендерить.

Вот вопрос в том как это сделать.



--------------------
What DA F...???
PM MAIL WWW Skype Jabber   Вверх
nickless
Дата 10.3.2008, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

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



Посмотри NeHe, большинство примеров кроссплатформенные, т.к. используют либы вроде GLUT.


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
smalcom
Дата 10.3.2008, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



glut для инициализации использует возможности оконой среды. те glx в иксах и wgl в винде


--------------------
What DA F...???
PM MAIL WWW Skype Jabber   Вверх
Rickert
Дата 11.3.2008, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


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

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



Между 1 и 2 пунктами вставь "инициализация OpenGL"


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
smalcom
  Дата 11.3.2008, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

Между 1 и 2 пунктами вставь "инициализация OpenGL"


Цитата

в результате все без ошибок, но и без результатно. А вся соль в том, что между пунктами 1 и 2 библиотеке OpenGL нужно указать куда рендерить.

Вот вопрос в том как это сделать.



--------------------
What DA F...???
PM MAIL WWW Skype Jabber   Вверх
KaraKum
  Дата 12.3.2008, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(smalcom @ 10.3.2008,  19:19)
glut для инициализации использует возможности оконой среды. те glx в иксах и wgl в винде

Именно, то есть функции библиотеки определяют текущую ОС для которой компилируется приложение и эта же библиотека использует подобающие параметры и функции для этой текущей операционно системы и, конечно, конечный результат компиляции будет зависеть от ОС, а вот спроектированный программный код - нет, что позволит без всякого труда скомпилировать тот же код для другой платформы.

Например, вот код конкретно для винды без использования библиотеки GLUT (код вырезан из моей текущей создаваемой проги, поэтому скомпилировать её не получится - многие функции и переменные определены в других, подключаемых, файлах):

Код

//basic set of code for the OpenGL application

#pragma comment(lib, "OpenGL32.lib");
#pragma comment(lib, "GLu32.lib");
#pragma comment(lib, "GLaux.lib");

#include <windows.h>              // Заголовочные файлы для Windows
#include <gl\gl.h>                // Заголовочные файлы для библиотеки OpenGL32
#include <gl\glu.h>              // Заголовочные файлы для библиотеки GLu32
#include <gl\glaux.h>              // Заголовочные файлы для библиотеки GLaux

//GLOBAL VARIABLES ///////////////

#include "GlobalVar.h"

//FUNCTIONS PROTOTYPES + DEFINITIONS ///////////////

#include "Functions.h"

//C L A S S E S ///////////////

#include "Classes.h"

//FUNCTIONS DEFINITIONS ///////////////

GLvoid ReSizeGLScene(GLsizei width, GLsizei height)        // Изменить размер и инициализировать окно GL 
{
    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);            // Выбор матрицы вида модели
    glLoadIdentity();              // Сброс матрицы вида модели
}

int InitGL(GLvoid)                // Все установки касаемо OpenGL происходят здесь
{
    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);          // Очистка экрана в черный цвет
    //формирование буфера глубины
    glClearDepth(1.0f);              // Разрешить очистку буфера глубины
    glDepthFunc(GL_LEQUAL);            // Тип теста глубины
    glEnable(GL_DEPTH_TEST);            // Разрешить тест глубины
    glShadeModel(GL_SMOOTH);            // Разрешить плавное цветовое сглаживание
    //указываем OpenGl, что нужно сделать перспективу лучше
    glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);      // Улучшение в вычислении перспективы

    return true;                // Инициализация прошла успешно
}

GLvoid KillGLWindow(GLvoid)              // Корректное разрушение окна
{
    if(fullscreen)              // Мы в полноэкранном режиме?
    {
        ChangeDisplaySettings(NULL, 0);        // Если да, то переключаемся обратно в оконный режим
        ShowCursor(true);            // Показать курсор мышки
    }
    if(hRC)                // Существует ли Контекст Рендеринга?
    {
        if(!wglMakeCurrent(NULL, NULL))        // Возможно ли освободить RC и DC?
        {
            MessageBox(NULL, "Release Of DC And RC Failed.", "SHUTDOWN ERROR", MB_OK | MB_ICONINFORMATION);
        }
        if(!wglDeleteContext(hRC))        // Возможно ли удалить RC?
        {
            MessageBox(NULL, "Release Rendering Context Failed.", "SHUTDOWN ERROR", MB_OK | MB_ICONINFORMATION);
        }
        hRC = NULL;              // Установить RC в NULL
    }
    if(hDC && !ReleaseDC(hWnd, hDC))          // Возможно ли уничтожить DC?
    {
        MessageBox(NULL, "Release Device Context Failed.", "SHUTDOWN ERROR", MB_OK | MB_ICONINFORMATION);
        hDC = NULL;                // Установить DC в NULL
    }
    if(hWnd && !DestroyWindow(hWnd))            // Возможно ли уничтожить окно?
    {
        MessageBox(NULL, "Could Not Release hWnd.", "SHUTDOWN ERROR", MB_OK | MB_ICONINFORMATION);
        hWnd = NULL;                // Установить hWnd в NULL
    }
    if(!UnregisterClass("OpenGL", hInstance))        // Возможно ли разрегистрировать класс
    {
        MessageBox(NULL, "Could Not Unregister Class.", "SHUTDOWN ERROR", MB_OK | MB_ICONINFORMATION);
        hInstance = NULL;                // Установить hInstance в NULL
    }
}

BOOL CreateGLWindow(LPCWSTR title, int width, int height, int bits, bool fullscreenflag)
{
    GLuint PixelFormat;              // Хранит результат после поиска
    WNDCLASS wc;                // Структура класса окна
    DWORD dwExStyle;              // Расширенный стиль окна
    DWORD dwStyle;              // Обычный стиль окна
    RECT WindowRect;                // Grabs Rectangle Upper Left / Lower Right Values
    WindowRect.left = (long)0;              // Установить левую составляющую в 0
    WindowRect.right = (long)width;              // Установить правую составляющую в Width
    WindowRect.top = (long)0;                // Установить верхнюю составляющую в 0
    WindowRect.bottom = (long)height;              // Установить нижнюю составляющую в Height
    fullscreen = fullscreenflag;              // Устанавливаем значение глобальной переменной fullscreen
    hInstance = GetModuleHandle(NULL);        // Считаем дескриптор нашего приложения
    wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC;      // Перерисуем при перемещении и создаём скрытый DC
    wc.lpfnWndProc = (WNDPROC) WndProc;          // Процедура обработки сообщений
    wc.cbClsExtra = 0;              // Нет дополнительной информации для класса
    wc.cbWndExtra = 0;              // Нет дополнительной информации для окна
    wc.hInstance = hInstance;            // Устанавливаем дескриптор
    wc.hIcon = LoadIcon(NULL, IDI_WINLOGO);        // Загружаем иконку по умолчанию
    wc.hCursor = LoadCursor(NULL, IDC_ARROW);        // Загружаем указатель мышки
    wc.hbrBackground = NULL;              // Фон не требуется для GL
    wc.lpszMenuName = NULL;              // Меню в окне не будет
    wc.lpszClassName = "OpenGL";            // Устанавливаем имя классу
    if(!RegisterClass(&wc))              // Пытаемся зарегистрировать класс окна
    {
        MessageBox(NULL, "Failed To Register The Window Class.", "ERROR", MB_OK | MB_ICONEXCLAMATION);
        return false;                // Выход и возвращение функцией значения false
    }
    if(fullscreen)                // Полноэкранный режим?
    {
        DEVMODE dmScreenSettings;            // Режим устройства
        memset(&dmScreenSettings, 0, sizeof(dmScreenSettings));    // Очистка для хранения установок
        dmScreenSettings.dmSize = sizeof(dmScreenSettings);      // Размер структуры Devmode
        dmScreenSettings.dmPelsWidth = width;        // Ширина экрана
        dmScreenSettings.dmPelsHeight = height;        // Высота экрана
        dmScreenSettings.dmBitsPerPel = bits;        // Глубина цвета
        dmScreenSettings.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;// Режим Пикселя
        // Пытаемся установить выбранный режим и получить результат.  Примечание: CDS_FULLSCREEN убирает панель управления.
        if(ChangeDisplaySettings(&dmScreenSettings, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL)
        {
            // Если переключение в полноэкранный режим невозможно, будет предложено два варианта: оконный режим или выход.
            if(MessageBox(NULL, "The Requested Fullscreen Mode Is Not Supported By\nYour Video Card. Use Windowed Mode Instead?", 
                "NeHe GL", MB_YESNO | MB_ICONEXCLAMATION) == IDYES)
            {
                fullscreen = false;          // Выбор оконного режима (fullscreen = false)
            }
            else
            {
                // Выскакивающее окно, сообщающее пользователю о закрытии окна.
                MessageBox(NULL, "Program Will Now Close.", "ERROR", MB_OK | MB_ICONSTOP);
                return false;            // Выход и возвращение функцией false
            }
        }
    }
    if(fullscreen)                  // Мы остались в полноэкранном режиме?
    {
        dwExStyle = WS_EX_APPWINDOW;          // Расширенный стиль окна
        dwStyle = WS_POPUP;            // Обычный стиль окна
        ShowCursor(false);              // Скрыть указатель мышки
    }
    else
    {
        dwExStyle = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE;      // Расширенный стиль окна
        dwStyle = WS_OVERLAPPEDWINDOW;        // Обычный стиль окна
    }
    AdjustWindowRectEx(&WindowRect, dwStyle, false, dwExStyle);      // Подбирает окну подходящие размеры
    if(!(hWnd = CreateWindowEx(dwExStyle,          // Расширенный стиль для окна
        (LPCSTR)"OpenGL",          // Имя класса
        (LPCSTR)"My first OpenGL program",            // Заголовок окна
        WS_CLIPSIBLINGS |        // Требуемый стиль для окна
        WS_CLIPCHILDREN |        // Требуемый стиль для окна
        dwStyle,          // Выбираемые стили для окна
        0, 0,            // Позиция окна
        WindowRect.right - WindowRect.left,    // Вычисление подходящей ширины
        WindowRect.bottom - WindowRect.top,    // Вычисление подходящей высоты
        NULL,            // Нет родительского
        NULL,            // Нет меню
        hInstance,          // Дескриптор приложения
        NULL)))          // Не передаём ничего до WM_CREATE (???)
    {
        KillGLWindow();                // Восстановить экран
        MessageBox(NULL, "Window Creation Error.", "ERROR", MB_OK | MB_ICONEXCLAMATION);
        return false;                // Вернуть false
    }
    static PIXELFORMATDESCRIPTOR pfd =            // pfd сообщает Windows каким будет вывод на экран каждого пикселя
    {
        sizeof(PIXELFORMATDESCRIPTOR),            // Размер дескриптора данного формата пикселей
            1,                  // Номер версии
            PFD_DRAW_TO_WINDOW |              // Формат для Окна
            PFD_SUPPORT_OPENGL |              // Формат для OpenGL
            PFD_DOUBLEBUFFER,              // Формат для двойного буфера
            PFD_TYPE_RGBA,                // Требуется RGBA формат
            bits,                  // Выбирается бит глубины цвета
            0, 0, 0, 0, 0, 0,              // Игнорирование цветовых битов
            0,                  // Нет буфера прозрачности
            0,                  // Сдвиговый бит игнорируется
            0,                  // Нет буфера накопления
            0, 0, 0, 0,                // Биты накопления игнорируются
            32,                  // 32 битный Z-буфер (буфер глубины)
            0,                  // Нет буфера трафарета
            0,                  // Нет вспомогательных буферов
            PFD_MAIN_PLANE,                // Главный слой рисования
            0,                  // Зарезервировано
            0, 0, 0                  // Маски слоя игнорируются
    };
    if(!(hDC = GetDC(hWnd)))              // Можем ли мы получить Контекст Устройства?
    {
        KillGLWindow();                // Восстановить экран
        MessageBox(NULL, "Can't Create A GL Device Context.", "ERROR", MB_OK | MB_ICONEXCLAMATION);
        return false;                // Вернуть false
    }
    if(!(PixelFormat = ChoosePixelFormat(hDC, &pfd)))        // Найден ли подходящий формат пикселя?
    {
        KillGLWindow();                // Восстановить экран
        MessageBox(NULL, "Can't Find A Suitable PixelFormat.", "ERROR", MB_OK | MB_ICONEXCLAMATION);
        return false;                // Вернуть false
    }
    if(!SetPixelFormat(hDC, PixelFormat, &pfd))          // Возможно ли установить Формат Пикселя?
    {
        KillGLWindow();                // Восстановить экран
        MessageBox(NULL, "Can't Set The PixelFormat.", "ERROR", MB_OK | MB_ICONEXCLAMATION);
        return false;                // Вернуть false
    }
    if(!(hRC = wglCreateContext(hDC)))          // Возможно ли установить Контекст Рендеринга?
    {
        KillGLWindow();                // Восстановить экран
        MessageBox(NULL, "Can't Create A GL Rendering Context.", "ERROR", MB_OK | MB_ICONEXCLAMATION);
        return false;                // Вернуть false
    }
    if(!wglMakeCurrent(hDC, hRC))            // Попробовать активировать Контекст Рендеринга
    {
        KillGLWindow();                // Восстановить экран
        MessageBox(NULL, "Can't Activate The GL Rendering Context.", "ERROR", MB_OK | MB_ICONEXCLAMATION);
        return false;                // Вернуть false
    }
    ShowWindow(hWnd, SW_SHOW);              // Показать окно
    SetForegroundWindow(hWnd);              // Слегка повысим приоритет
    SetFocus(hWnd);                // Установить фокус клавиатуры на наше окно
    ReSizeGLScene(width, height);              // Настроим перспективу для нашего OpenGL экрана.
    if(!InitGL())                  // Инициализация только что созданного окна
    {
        KillGLWindow();                // Восстановить экран
        MessageBox(NULL, "Initialization Failed.", "ERROR", MB_OK | MB_ICONEXCLAMATION);
        return false;                // Вернуть false
    }
    return true;                  // Всё в порядке!
}

//WINMAIN /////
int WINAPI WinMain(HINSTANCE hInstance,        // Дескриптор приложения
                   HINSTANCE hPrevInstance,        // Дескриптор родительского приложения
                   LPSTR lpCmdLine,        // Параметры командной строки
                   int nCmdShow)        // Состояние отображения окна
{
    MSG msg;              // Структура для хранения сообщения Windows
    BOOL done = false;            // Логическая переменная для выхода из цикла
    // Спрашивает пользователя, какой режим экрана он предпочитает
    if(MessageBox(NULL, "Хотите ли Вы запустить приложение в полноэкранном режиме?", "Запустить в полноэкранном режиме?", MB_YESNO | MB_ICONQUESTION) == IDNO)
    {
        fullscreen = false;          // Оконный режим
    }
    // Создать наше OpenGL окно
    if(!CreateGLWindow((LPCWSTR)"NeHe OpenGL окно", 1024, 768, 32, fullscreen))
    {
        return 0;              // Выйти, если окно не может быть создано
    }
    
    while(!done)                // Цикл продолжается, пока done не равно true
    {
        if(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))    // Есть ли в очереди какое-нибудь сообщение?
        {
            if(msg.message == WM_QUIT)        // Мы поучили сообщение о выходе?
            {
                done = true;          // Если так, done=true
            }
            else              // Если нет, обрабатываем сообщения
            {
                TranslateMessage(&msg);        // Переводим сообщение
                DispatchMessage(&msg);        // Отсылаем сообщение
            }
        }
        else                // Если нет сообщений
        {
            // Прорисовываем сцену.
            if(active)          // Активна ли программа?
            {
                if(bKeyDown[VK_ESCAPE])        // Была ли нажата клавиша ESC?
                {
                    done = true;      // ESC говорит об останове выполнения программы
                }
                else            // Не время для выхода, обновим экран.
                {
                    DrawGLScene();        // Рисуем сцену
                    SwapBuffers(hDC);    // Меняем буфер (двойная буферизация)
                }
            }
            if(bKeyDown[VK_F1])          // Была ли нажата F1?
            {
                bKeyDown[VK_F1] = false;        // Если так, меняем значение ячейки массива на false
                KillGLWindow();          // Разрушаем текущее окно
                fullscreen = !fullscreen;      // Переключаем режим
                // Пересоздаём наше OpenGL окно
                if(!CreateGLWindow((LPCWSTR)"NeHe OpenGL структура", 1024, 768, 32, fullscreen))
                {
                    return 0;        // Выходим, если это невозможно
                }
            }
        }
    }
    // Shutdown
    KillGLWindow();                // Разрушаем окно
    return (msg.wParam);              // Выходим из программы
}

//WNDPROC /////
LRESULT CALLBACK WndProc(HWND hWnd,            // Дескриптор нужного окна
                         UINT  uMsg,            // Сообщение для этого окна
                         WPARAM  wParam,            // Дополнительная информация
                         LPARAM  lParam)            // Дополнительная информация
{
    switch (uMsg)                // Проверка сообщения для окна
    {
    case WM_ACTIVATE:            // Проверка сообщения активности окна
        {
            if(!HIWORD(wParam))          // Проверить состояние минимизации
            {
                active = true;          // Программа активна
            }
            else
            {
                active = false;          // Программа теперь не активна
            }
            return 0;            // Возвращаемся в цикл обработки сообщений
        }
    case WM_SYSCOMMAND:            // Перехватываем системную команду
        {
            switch (wParam)            // Останавливаем системный вызов
            {
            case SC_SCREENSAVE:        // Пытается ли запустится скринсейвер?
            case SC_MONITORPOWER:        // Пытается ли монитор перейти в режим сбережения энергии?
                return 0;          // Предотвращаем это
            }
            break;              // Выход
        }
    case WM_CLOSE:              // Мы получили сообщение о закрытие?
        {
            PostQuitMessage(0);          // Отправить сообщение о выходе
            return 0;            // Вернуться назад
        }
    case WM_KEYDOWN:            // Была ли нажата кнопка?
        {
            bKeyDown[wParam] = true;          // Если так, мы присваиваем этой ячейке true
            return 0;            // Возвращаемся
        }
    case WM_KEYUP:              // Была ли отпущена клавиша?
        {
            bKeyDown[wParam] = false;          //  Если так, мы присваиваем этой ячейке false
            return 0;            // Возвращаемся
        }
    case WM_SIZE:              // Изменены размеры OpenGL окна
        {
            ReSizeGLScene(LOWORD(lParam), HIWORD(lParam));  // Младшее слово=Width, старшее слово=Height
            return 0;            // Возвращаемся
        }
    }
    // пересылаем все необработанные сообщения DefWindowProc
    return DefWindowProc(hWnd, uMsg, wParam, lParam);
}


А вот почти тот же код, но уже с использованием библиотеки GLUT:

Код

//main code file for the OpenGL program based on GLUT library and console application

#pragma comment(lib, "Glut32.lib");

#include <windows.h>
#include "glut.h"

void Init();
void LineSegment();

void main(int argc, char* *argv)
{
    glutInit(&argc, argv);
    glutInitWindowPosition(50, 50);
    glutInitWindowSize(400, 400);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutCreateWindow("My first OpenGL program based on GLUT.lib");

    Init();
    glutDisplayFunc(LineSegment);

    glutMainLoop();
}

void Init()
{
    glClearColor(1, 1, 1, 0);
    glMatrixMode(GL_PROJECTION);
    gluOrtho2D(0, 400, 0, 400);
}

void LineSegment()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1, 0, 0);
    glBegin(GL_LINES);
        glVertex2i(40, 100);
        glVertex2i(350, 380);
    glEnd();
    glFlush();
}

PM MAIL WWW   Вверх
smalcom
Дата 12.3.2008, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ммм, спасибо за примеры, но как инитить окно с опенгл для glx, wgl, sdl, и glut я знаю.
в чем основная идея которую я пытаюсь донести?
есть дрова для X.Org сервера, они естественно на него подвязаны немного. Что я хочу. Хочу использовать для вывода графики через OpenGL драйвера для видео и libGL от вендора. Без иксов.
Воть, терь думаю понятнее объяснил.


--------------------
What DA F...???
PM MAIL WWW Skype Jabber   Вверх
nickless
Дата 23.3.2008, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

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



Цитата(smalcom @  12.3.2008,  11:13 Найти цитируемый пост)
Хочу использовать для вывода графики через OpenGL драйвера для видео и libGL от вендора. Без иксов.

Совсем без иксов сложно использовать аппаратнoe ускорение, попробуй разве что посмотреть как это делает XGL, а еще насколько я знаю OpenGL можно заинициализировать в DirectFB, ему Х не нужен.

Это сообщение отредактировал(а) nickless - 23.3.2008, 23:41


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

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

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


 




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


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

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