Войти
ПрограммированиеФорумГрафика

OpenGL Вопросы (52 стр)

Страницы: 149 50 51 52 53 54 Следующая »
#765
10:30, 29 дек 2022

Для уменьшения зависимостей, делаю загрузчик функций OpenGL.

Используется загрузчик так

//Инициализирую OpenGL 1.5
OpenGLLoader loader(1,5);

Для каждой версии свой заголовок
https://github.com/JordanCpp/Lib-LDL/blob/master/include/LDL/Open… OpenGL1_0.hpp

Инициализирую функции так

#include <LDL/Loaders/OpenGLLoader.hpp>
#include <LDL/Core/Library.hpp>
#include <LDL/OpenGL/OpenGL1_0.hpp>
#include <LDL/Graphics/Gpu/GpuFunctions.hpp>

using namespace LDL::Loaders;

OpenGLLoader::OpenGLLoader(size_t major, size_t minor) :
  _Major(major),
  _Minor(minor)
{
  LDL::Graphics::GpuFunctions _Library;

  glAccum = (pglAccum*)_Library.Function("glAccum");
  glAlphaFunc = (pglAlphaFunc*)_Library.Function("glAlphaFunc");
  glAreTexturesResident = (pglAreTexturesResident*)_Library.Function("glAreTexturesResident");
  glArrayElement = (pglArrayElement*)_Library.Function("glArrayElement");
  glBegin = (pglBegin*)_Library.Function("glBegin");
  glBindTexture = (pglBindTexture*)_Library.Function("glBindTexture");

Вопрос, как правильно объявить прототипы функций OpenGL? Сейчас это выглядит так, что не правильно, но не могу понять как правильно.

typedef  void  (pglVertex4sv)(const  GLshort* v);
typedef  void  (pglVertexPointer)(GLint  size, GLenum  type, GLsizei  stride, const  GLvoid* pointer);
typedef  void  (pglViewport)(GLint  x, GLint  y, GLsizei  width, GLsizei  height);


pglAccum* glAccum = NULL;
pglAlphaFunc* glAlphaFunc = NULL;
#766
10:33, 29 дек 2022

Для того, что бы загрузить динамически все функции OpenGL и новый и старые, делаю так

void* GpuFunctionsImpl::Function(const char* name)
{
    void* p = (void*)wglGetProcAddress(name);

    if (p == 0 || (p == (void*)0x1) || (p == (void*)0x2) || (p == (void*)0x3) || (p == (void*)-1))
    {
        p = _Library.Function(name);
    }

    return p;
}

Взято от сюда
https://www.khronos.org/opengl/wiki/Load_OpenGL_Functions

#767
10:37, 29 дек 2022

Aroch
> Если так, то возможно проще будет воспользоваться glDrawPixels
Ок. Спасибо, посмотрю.

Cheb
> При эффектах с рендером в текстуру брали текстуру 1024х1024 для 800х600 и
> 1024х768 и использовали только часть её.
Ок. Добавлю проверку и буду создавать квадратную текстуру. Сейчас я создаю именно текстуру по размеру экрана.

Cheb
> Ну, просто "рисование в текстуру" и вуду - это две вещи несовместные. Не по
> Сеньке шапка. Не было тогда такого, обходились без.
> GeForce 2 MX 400 ещё как-то тянет, крякнув, пёрднув, и с трудом вытягивая 60
> фпс на голом кубике. Но вторая жифорсина - это уже другая эпоха.
Спасибо за инфу.

#768
(Правка: 12:50) 12:48, 29 дек 2022

JordanCpp
Вот я не пойму твой посыл. Ты решил по собственному желанию скатиться в "каменный век".
Поддерживая, железо и софт, которого ни у кого уже нет. Тут как бы вопросов нет, имеешь полное право, но тогда какого лешего терроризируешь людей на форуме?
Размер текстур со степенью двойки, это только начало и впереди много "веселухи". OpenGL причесали только к версии 4.5-4.6. Тебе придётся написать кучу "костылей" в коде, потратить своё время на решение задач, по воссозданию прежних проблем, которые уже исправлены в новых версиях.

> //Инициализирую OpenGL 1.5
К счастью бронтозавры вымерли

> Инициализирую функции так
Они все устаревшие.

#769
13:12, 29 дек 2022

Funtik
> но тогда какого лешего терроризируешь людей на форуме?
Данный сайт лучший русскоязычный сайт по разработке игр. Здесь полно матерых геймдев разработчиков. Где как не здесь задавать вопросы? На сайте Unity? У них слишком тонкая душевная ориентация:)

И если бы я прям террорезироал форум. Меня бы модераторы давно выпилили:)

#770
13:14, 29 дек 2022

Funtik
> Вот я не пойму твой посыл. Ты решил по собственному желанию скатиться в
> "каменный век".
> Поддерживая, железо и софт, которого ни у кого уже нет.
Совершенно верно. Еще будет поддержка ms-dos. Мой посыл написать фреймворк с поддержкой старых и новых систем. Это поддержка не только Voodoo3, но и всякие GMA Intel и т.д

#771
(Правка: 13:19) 13:16, 29 дек 2022

Funtik
Я нахожу чарующее в том, что бы прикоснуться в программном коде, к старым системам, инструментам и подходам. Я юзер с  Old-Games.ru ну ты понял:) И еще мне не нравится как быстро устаревает железо и системы.

Свои мотивы к данному безобразию описал в следующих статьях, тут и тут.

#772
13:26, 29 дек 2022

JordanCpp
Вот не знаю как ты, а я начинаю испытывать депрессию, когда понимаю, что делаю бесполезную, никому не нужную работу.
У немцев во время ВОВ такая пытка была, они сгоняли пленных на замёрзшую реку и заставляли носить воду ведрами, из одной проруби черпают, а в другую носят выливают. И несколько часов так работали. Человек после такой работы надламывается, разрушается изнутри, от бессмысленности действий.

#773
13:32, 29 дек 2022

JordanCpp
> И еще мне не нравится как быстро устаревает железо и системы.
У меня лет десять валяется видюха ATI Radeon X800 GTO2 (SAPPHIRE)
Поддерживает OGL 2.0, DX9, стоила реальных денег - $200
Могу продать, если нужно...

#774
13:34, 29 дек 2022

Funtik
Моя цель написать аналог SDL2 но на С++. Но с поддержкой старых и новых систем. Для разработки я ограничил себя стандартом С++ 98. Но юзающие фреймворк могут использовать любой современный стандарт С++. Фреймворк предоставляет высокоуровневый API, то что он будет запускаться на любом утюге, жто чисто моё желание.

Фреймворк не бесполезен. Поддержка старого железа занимает 1000 строк. Ну как бы не о чем. Мне еще интересно как раньше писали игры и т.д

#775
(Правка: 13:37) 13:35, 29 дек 2022

Funtik
> У меня лет десять валяется видюха ATI Radeon X800 GTO2 (SAPPHIRE)
> Поддерживает OGL 2.0, DX9, стоила реальных денег - $200
> Могу продать, если нужно...
У меня есть. Я ищу железо старее, что бы нативно тестировать свой фреймворк. Но за предложение спасибо:)

Для меня athlon 3000+ (2003) это уже новодел:)

#776
17:40, 29 дек 2022

JordanCpp
> Какие есть еще варианты задействовать OpenGL и рисовать пиксели на экране?
glDrawPixels
> Теперь я начинаю понимать, для чего дропают поддержку старого железа и систем. Что бы не писать лишний код учитывающий наслоения говн мамонта начиная с мезозоя:)
Вот. В дошейдерные времена был совсем другой GL, ничего общего с современным
> вплоть Ms-Dos, PS2
Упороться софтрендером. Все равно не сделаешь одинаково с GL. Еще Glide тогда уж вспомни
> делаю загрузчик функций OpenGL
glee?
Функции, которых нет в поддерживаемой версии GL иногда можно загрузить через расширения ARB, EXT итд
> Моя цель написать аналог SDL2 но на С++
Это аналог SFML

#777
19:22, 29 дек 2022

Рендерферма кроликов
> Упороться софтрендером. Все равно не сделаешь одинаково с GL. Еще Glide тогда
> уж вспомни
Для систем без аппаратного ускорения есть отдельный  API CpuRender. Он схож с абстракцией над аппаратным. Я реализую 2D  графику. Софтверный ogl делать не нужно.

#778
19:25, 29 дек 2022

Рендерферма кроликов
> Это аналог SFML
У него есть фатальный недостаток:)

#779
(Правка: 23:12) 23:09, 29 дек 2022

Разобрался с загрузкой функций OpenGL.

Для порядка сигнатуры функций и дефайны для каждой версии будут находиться в своём hpp файле.

К примеру для инициализации  OpenGL 4.6 будут инициализированы всё предыдущие версии, 1.0, 1.2 и в плоть по  4.6.

Классу загрузчику можно указать конкретную версию и проверить доступен ли запрашиваемый функционал.

Страницы: 149 50 51 52 53 54 Следующая »
ПрограммированиеФорумГрафика