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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2010, 23:37   #1
SalasAndriy
Форумчанин Подтвердите свой е-майл
 
Аватар для SalasAndriy
 
Регистрация: 01.11.2007
Сообщений: 157
Вопрос OpenGL рендеринг в текстуру или ...

Доброго времени суток! Я новичок в OpenGL и потому прошу помощи... Подскажите пожалуйста, возможно ли в OpenGL рендерить когда нету ни хендла окна (HWND), ни контекста окна (HDC), а только указатель на биты памяти... формат данных RGBA - 32 бита на пиксель
Вот пример:
Код:
function DrawEffect(PVideo: Pointer; Width, Height: Integer): boolean;
begin
  // Тут рендеринг OpenGL 
  // и например через glReadPixels получаю данные
  
  // Или например, рендеринг в текстуру
  // а потом получаю данные через glGetTexImage
end;
В этой функции нужно произвести рендеринг в PVideo
Подскажите, такое возможно? И если да, то как такое реализовать? Спасибо.

Последний раз редактировалось SalasAndriy; 18.11.2010 в 02:07.
SalasAndriy вне форума Ответить с цитированием
Старый 18.11.2010, 13:11   #2
Demi
Пользователь Подтвердите свой е-майл
 
Аватар для Demi
 
Регистрация: 28.03.2007
Сообщений: 52
По умолчанию

Копай в сторону FBO.

Если будут проблемы, пиши в личку.
GLEngine2D - сайт проекта
FreeRating Cайт нашей команды
Demi вне форума Ответить с цитированием
Старый 18.11.2010, 23:27   #3
SalasAndriy
Форумчанин Подтвердите свой е-майл
 
Аватар для SalasAndriy
 
Регистрация: 01.11.2007
Сообщений: 157
По умолчанию

Спасибо, за совет... Копался в инете, но ничего хорошего не нашел... Искал Framebuffer Object, как Вы и советовали... Наткнулся на вот эту статью.
Но мне не понятно как провести инициализацию... Какие юниты подключать... Вот код который приведён в той статье, правда на С++ но не проблема, я переведу потом себе...
Код:
GLuint framebuffer = 0;
GLuint texture = 0;
GLuint renderbuffer = 0;

while (glGetError() != GL_NO_ERROR) {
    // Извлекаем из очереди все ошибки OpenGL.
}

// Создаём буфер кадра.
glGenFramebuffersEXT(1, &framebuffer);
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, framebuffer);

// Создаём текстуру.
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, 512, 512, 0, GL_RGB, GL_UNSIGNED_BYTE, NULL);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

// Создаём буфер вывода.
glGenRenderbuffersEXT(1, &renderbuffer);
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, renderbuffer);
glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT24, 512, 512);

// Присоединяем текстуру как буфер цвета, а буфер вывода - как буфер глубины.
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
    GL_TEXTURE_2D, texture, 0);
glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT,
    GL_RENDERBUFFER_EXT, renderbuffer);

// Обрабатываем возможные ошибки.
GLenum status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);
if (status != GL_FRAMEBUFFER_COMPLETE_EXT || glGetError() != GL_NO_ERROR) {
    glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
        GL_TEXTURE_2D, 0, 0);
    glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT,
        GL_RENDERBUFFER_EXT, 0);

    glBindTexture(GL_TEXTURE_2D, 0);
    glDeleteTextures(1, &texture);
    glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, 0);
    glDeleteRenderbuffersEXT(1, &renderbuffer);
    glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
    glDeleteFramebuffersEXT(1, &framebuffer);

    throw std::exception("Bad framebuffer.");
}

glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT);
glReadBuffer(GL_COLOR_ATTACHMENT0_EXT); // Для glReadPixels() и т. д.

// Рисуем в текстуру.
DrawToTexture();

// Возврат к оконному контексту.
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); 

glDrawBuffer(GL_BACK);
glReadBuffer(GL_BACK);
glBindTexture(GL_TEXTURE_2D, texture);

// Рисуем в окно, используя текстуру с изображением.
DrawToWindow();
Я не понимаю следующего:
1. Реализация DrawToTexture();
2. Реализация DrawToWindow();
3. Если скажем я уже реализовал DrawToTexture(); и DrawToWindow(); как это всё прикрутить к проекту?
4. Какие юниты подключать кроме uses OpenGL;

Смотрел книгу Краснова, там нету такого... в гугле мало инфы об этом... Может я не то искал что нужно, не знаю даже...

Может есть какие-то ссылки или примеры реализации рендеринга в текстуру без использования оконного контекста?

Спасибо.
SalasAndriy вне форума Ответить с цитированием
Старый 19.11.2010, 08:31   #4
Demi
Пользователь Подтвердите свой е-майл
 
Аватар для Demi
 
Регистрация: 28.03.2007
Сообщений: 52
По умолчанию

Сначала надо начать с модуля...

OpenGl - не пойдёт, так как там нету тех расширение которые вам нужны. Поэтому нужен более свежий заголовочный файл..
Взять можно здесь http://wiki.delphigl.com/index.php/Kategorie:Archiv (Archivglsdk win32 2006 1 - это нужно). причём обратите внимание на инициализацию OpenGL - есть небольшие отличия..

http://wiki.delphigl.com/index.php/T...mebufferobject - статья, как работать с FBO.

Я думаю что этого вполне достаточно, что бы разобраться.
GLEngine2D - сайт проекта
FreeRating Cайт нашей команды
Demi вне форума Ответить с цитированием
Старый 19.11.2010, 13:22   #5
SalasAndriy
Форумчанин Подтвердите свой е-майл
 
Аватар для SalasAndriy
 
Регистрация: 01.11.2007
Сообщений: 157
По умолчанию

Спасибо, смотрел и пробовал... Скачал SDK и теперь проблема в ошибках)

Не могу ничего инициализировать... Везде ошибка выскакивает вот такая:
Цитата:
---------------------------
Project1
---------------------------
Access violation at address 00000000. Read of address 00000000.
---------------------------
ОК
---------------------------
Вот так вот я прикручиваю всё к проекту:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, dglOpenGL, ExtCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    PaintBox1: TPaintBox;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    Texture: TBitmap;

    procedure InitFBO;
    procedure CheckFBO;
    procedure RenderToFBO;
    procedure FreeFBO;
  end;

var
  Form1: TForm1;

  fbo: 		GluInt;
  depthbuffer: 	GluInt;
  tex: 		GluInt;

implementation

{$R *.dfm}

{ TForm1 }

procedure TForm1.CheckFBO;
var
  error: GlEnum;
begin
  error := glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);
  case error of
    GL_FRAMEBUFFER_COMPLETE_EXT:
      Exit;
    GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT:
      raise Exception.Create('Incomplete attachment');
    GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT:
      raise Exception.Create('Missing attachment');
    GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT:
      raise Exception.Create('Incomplete dimensions');
    GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT:
      raise Exception.Create('Incomplete formats');
    GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT:
      raise Exception.Create('Incomplete draw buffer');
    GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT:
      raise Exception.Create('Incomplete read buffer');
    GL_FRAMEBUFFER_UNSUPPORTED_EXT:
      raise Exception.Create('Framebufferobjects unsupported');
  end;
end;

procedure TForm1.FreeFBO;
begin
  glDeleteFramebuffersEXT(1, @fbo);
  glDeleteRenderbuffersEXT(1, @depthbuffer);
  glDeleteTextures(1, @tex);
end;

procedure TForm1.InitFBO;
begin
  glGenFramebuffersEXT(1, @fbo);
  glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fbo);
  glGenRenderbuffersEXT(1, @depthbuffer);
  glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, depthbuffer);
  glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, 512, 512);
  glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, depthbuffer); 
  glGenTextures(1, @tex);
  glBindTexture(GL_TEXTURE_2D, tex);
  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_NEAREST);
  glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_NEAREST);
  glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8,  512, 512, 0, GL_RGBA, GL_UNSIGNED_BYTE, nil);
  glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
  GL_TEXTURE_2D, tex, 0);
  CheckFBO;
end;

procedure TForm1.RenderToFBO;
begin
  glBindFramebufferEXT(GL_FRAMEBUFFER_EXT,  fbo);
  glPushAttrib(GL_VIEWPORT_BIT or GL_COLOR_BUFFER_BIT);
  glViewPort(0, 0, 512, 512);
 
  //in die Textur von GL_COLOR_ATTACHMENT0_EXT rendern
 
  glDrawBuffer(GL_COLOR_ATTACHMENT1_EXT);
  glClearColor(1, 0, 0, 1);
  glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);

  //in die Textur von GL_COLOR_ATTACHMENT1_EXT rendern

  glReadPixels(0, 0, 512, 512, GL_RGBA, GL_UNSIGNED_BYTE, Texture.ScanLine[0]);
  PaintBox1.Canvas.Draw(0, 0, Texture);

  glPopAttrib;
  glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  if InitOpenGL('OpenGL32.dll', 'GLU32.dll') then
  begin
    Texture := TBitmap.Create;
    Texture.Width := 512;
    Texture.Height := 512;
    Texture.PixelFormat := pf32bit;
  end else
    Halt;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  FreeFBO;

  Texture.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  InitFBO;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  RenderToFBO;
end;

end.
Сделал всё как и написано в той статье что вы дали... Подскажите, пожалуйста, что я не так сделал? Вроде ничего не упустил но тем не менее программа не хочет работать... При нажатии на кнопку Button1 - ошибка, Button2 - ошибка... Одна и та же ошибка... Проверял где она выходит и нашел что вот в этой строчке:
Код:
glGenFramebuffersEXT(1, @fbo);
Не понимаю почему... Может я не правильно инициализирую саму библиотеку?

Последний раз редактировалось SalasAndriy; 19.11.2010 в 14:01.
SalasAndriy вне форума Ответить с цитированием
Старый 19.11.2010, 16:24   #6
Demi
Пользователь Подтвердите свой е-майл
 
Аватар для Demi
 
Регистрация: 28.03.2007
Сообщений: 52
По умолчанию

Видеокарта поддерживает FBO??
Какая она у вас?

и где ещё инициализация библиотеки?? например так..
Код:
InitOpenGL;
 SetDCPixelFormat(DC);
 hrcvis:=wglCreateContext(DC);
 ActivateRenderingContext(DC, hrcvis);
 wglMakeCurrent(DC,hrcvis);
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 glOrtho (0, width, height, 0, -100,100 );
 glViewport(0, 0, width, height);
 glMatrixMode(GL_MODELVIEW);
 glLoadIdentity();
 dcvis:=dc;
GLEngine2D - сайт проекта
FreeRating Cайт нашей команды

Последний раз редактировалось Demi; 19.11.2010 в 16:27.
Demi вне форума Ответить с цитированием
Старый 19.11.2010, 18:07   #7
SalasAndriy
Форумчанин Подтвердите свой е-майл
 
Аватар для SalasAndriy
 
Регистрация: 01.11.2007
Сообщений: 157
По умолчанию

Вот моя видеокарта:
Цитата:
--------[ Графический процессор ]--------

[ AGP 8x: nVIDIA GeForce FX 5500 ]

Свойства графического процессора:
Видеоадаптер nVIDIA GeForce FX 5500
Кодовое название ГП NV34B
PCI-устройство 10DE / 0326
Число транзисторов 47 млн.
Технологический процесс 0.15 um
Тип шины AGP 8x @ 8x
Объем видеоОЗУ 256 Мб
Частота ГП 270 МГц
Частота RAMDAC 350 МГц
Пиксельные конвейеры 4
TMU на конвейер 1
Vertex-шейдеры 2 (v2.0)
Пиксельные шейдеры 1 (v2.0)
Аппаратная поддержка DirectX DirectX v9.0
Pixel Fillrate 1080 Мпиксел/с
Texel Fillrate 1080 Мтексел/с

Свойства шины памяти:
Тип шины DDR
Ширина шины 128 бит
Реальная частота 163 МГц (DDR)
Эффективная частота 327 МГц
Пропускная способность 5232 Мб/с

Последний раз редактировалось SalasAndriy; 19.11.2010 в 18:27.
SalasAndriy вне форума Ответить с цитированием
Старый 19.11.2010, 18:08   #8
SalasAndriy
Форумчанин Подтвердите свой е-майл
 
Аватар для SalasAndriy
 
Регистрация: 01.11.2007
Сообщений: 157
По умолчанию

Вот мой OpenGL:
Цитата:
--------[ OpenGL ]--------

Свойства OpenGL:
Производитель NVIDIA Corporation
Renderer GeForce FX 5500/AGP/SSE2
Версия 2.1.1

Функции OpenGL:
GL_ARB_depth_texture Поддерживается
GL_ARB_fragment_program Поддерживается
GL_ARB_fragment_program_shadow Поддерживается
GL_ARB_fragment_shader Поддерживается
GL_ARB_half_float_pixel Поддерживается
GL_ARB_imaging Поддерживается
GL_ARB_multisample Поддерживается
GL_ARB_multitexture Поддерживается
GL_ARB_occlusion_query Поддерживается
GL_ARB_pixel_buffer_object Поддерживается
GL_ARB_point_parameters Поддерживается
GL_ARB_point_sprite Поддерживается
GL_ARB_shadow Поддерживается
GL_ARB_shader_objects Поддерживается
GL_ARB_shading_language_100 Поддерживается
GL_ARB_texture_border_clamp Поддерживается
GL_ARB_texture_compression Поддерживается
GL_ARB_texture_cube_map Поддерживается
GL_ARB_texture_env_add Поддерживается
GL_ARB_texture_env_combine Поддерживается
GL_ARB_texture_env_dot3 Поддерживается
GL_ARB_texture_mirrored_repeat Поддерживается
GL_ARB_texture_rectangle Поддерживается
GL_ARB_transpose_matrix Поддерживается
GL_ARB_vertex_buffer_object Поддерживается
GL_ARB_vertex_program Поддерживается
GL_ARB_vertex_shader Поддерживается
GL_ARB_window_pos Поддерживается
GL_S3_s3tc Поддерживается
GL_EXT_texture_env_add Поддерживается
GL_EXT_abgr Поддерживается
GL_EXT_bgra Поддерживается
GL_EXT_blend_color Поддерживается
GL_EXT_blend_func_separate Поддерживается
GL_EXT_blend_minmax Поддерживается
GL_EXT_blend_subtract Поддерживается
GL_EXT_compiled_vertex_array Поддерживается
GL_EXT_Cg_shader Поддерживается

Последний раз редактировалось SalasAndriy; 19.11.2010 в 18:29.
SalasAndriy вне форума Ответить с цитированием
Старый 19.11.2010, 18:10   #9
SalasAndriy
Форумчанин Подтвердите свой е-майл
 
Аватар для SalasAndriy
 
Регистрация: 01.11.2007
Сообщений: 157
По умолчанию

Не вместилось, сори... Вот продолжение.
Цитата:
GL_EXT_draw_range_elements Поддерживается
GL_EXT_fog_coord Поддерживается
GL_EXT_framebuffer_blit Поддерживается
GL_EXT_framebuffer_multisample Поддерживается
GL_EXT_framebuffer_object Поддерживается
GL_EXT_gpu_program_parameters Поддерживается
GL_EXT_multi_draw_arrays Поддерживается
GL_EXT_packed_depth_stencil Поддерживается
GL_EXT_packed_pixels Поддерживается
GL_EXT_paletted_texture Поддерживается
GL_EXT_pixel_buffer_object Поддерживается
GL_EXT_point_parameters Поддерживается
GL_EXT_rescale_normal Поддерживается
GL_EXT_secondary_color Поддерживается
GL_EXT_separate_specular_color Поддерживается
GL_EXT_shadow_funcs Поддерживается
GL_EXT_shared_texture_palette Поддерживается
GL_EXT_stencil_two_side Поддерживается
GL_EXT_stencil_wrap Поддерживается
GL_EXT_texture3D Поддерживается
GL_EXT_texture_compression_s3tc Поддерживается
GL_EXT_texture_cube_map Поддерживается
GL_EXT_texture_edge_clamp Поддерживается
GL_EXT_texture_env_combine Поддерживается
GL_EXT_texture_env_dot3 Поддерживается
GL_EXT_texture_filter_anisotropic Поддерживается
GL_EXT_texture_lod Поддерживается
GL_EXT_texture_lod_bias Поддерживается
GL_EXT_texture_object Поддерживается
GL_EXT_texture_sRGB Поддерживается
GL_EXT_timer_query Поддерживается
GL_EXT_vertex_array Поддерживается
GL_IBM_rasterpos_clip Поддерживается
GL_IBM_texture_mirrored_repeat Поддерживается
GL_KTX_buffer_region Поддерживается
GL_NV_blend_square Поддерживается
GL_NV_copy_depth_to_color Поддерживается
GL_NV_depth_clamp Поддерживается
GL_NV_fence Поддерживается
GL_NV_float_buffer Поддерживается
GL_NV_fog_distance Поддерживается
GL_NV_fragment_program Поддерживается
GL_NV_fragment_program_option Поддерживается
GL_NV_framebuffer_multisample_cover age Поддерживается
GL_NV_half_float Поддерживается
GL_NV_light_max_exponent Поддерживается
GL_NV_multisample_filter_hint Поддерживается
GL_NV_occlusion_query Поддерживается
GL_NV_packed_depth_stencil Поддерживается
GL_NV_pixel_data_range Поддерживается
GL_NV_point_sprite Поддерживается
GL_NV_primitive_restart Поддерживается
GL_NV_register_combiners Поддерживается
GL_NV_register_combiners2 Поддерживается
GL_NV_texgen_reflection Поддерживается
GL_NV_texture_compression_vtc Поддерживается

Последний раз редактировалось SalasAndriy; 19.11.2010 в 18:33.
SalasAndriy вне форума Ответить с цитированием
Старый 19.11.2010, 18:12   #10
SalasAndriy
Форумчанин Подтвердите свой е-майл
 
Аватар для SalasAndriy
 
Регистрация: 01.11.2007
Сообщений: 157
По умолчанию

Цитата:
GL_NV_texture_env_combine4 Поддерживается
GL_NV_texture_expand_normal Поддерживается
GL_NV_texture_rectangle Поддерживается
GL_NV_texture_shader Поддерживается
GL_NV_texture_shader2 Поддерживается
GL_NV_texture_shader3 Поддерживается
GL_NV_vertex_array_range Поддерживается
GL_NV_vertex_array_range2 Поддерживается
GL_NV_vertex_program Поддерживается
GL_NV_vertex_program1_1 Поддерживается
GL_NV_vertex_program2 Поддерживается
GL_NV_vertex_program2_option Поддерживается
GL_SGIS_generate_mipmap Поддерживается
GL_SGIS_texture_lod Поддерживается
GL_SGIX_depth_texture Поддерживается
GL_SGIX_shadow Поддерживается
GL_SUN_slice_accum Поддерживается
GL_WIN_swap_hint Поддерживается
WGL_EXT_swap_control Поддерживается
Это отчёт программы Everest Ultimate Edition 2006

Как видите OpenGL поддерживает:
Цитата:
GL_EXT_framebuffer_object Поддерживается
Я копался внутри этой библиотеки dglOpenGL.pas и увидел что процедуры такие как glGenFramebuffersEXT и т.д. загружаются динамически...
У меня в программе этого не происходит... Они равны nil...
Через DLL Export Viewer v1.02 смотрел саму библиотеку OpenGL32.dll и там нету glGenFramebuffersEXT и всех этих процедур... Может обновить мне саму библиотеку что-ли...

На счёт этого:
Код:
 SetDCPixelFormat(DC);
 hrcvis:=wglCreateContext(DC);
 ActivateRenderingContext(DC, hrcvis);
 wglMakeCurrent(DC,hrcvis);
Мне как раз и не нужен DC... мне нужно рендерить только в буфер или текстуру, а потом считывать с неё пиксели... А нету у вас рабочего примера с FBO на Дельфи?

Последний раз редактировалось SalasAndriy; 19.11.2010 в 18:36.
SalasAndriy вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Наложить текстуру в первую четверть и отображать ее на всю форму(Opengl). peredozer Мультимедиа в Delphi 4 27.05.2010 02:13
Как растянуть текстуру на всю форму(прямоугольник)?(OpenGl) peredozer Мультимедиа в Delphi 2 05.05.2010 19:29
Что мощнее или портативнее движок directx или opengl? albatros Помощь студентам 2 08.12.2009 17:43
OpenGl+Delphi,при загрузке текстуру сильно корежит Skif Помощь студентам 1 27.11.2007 08:40