Page 3 of 5 FirstFirst 12345 LastLast
Results 21 to 30 of 46

Thread: Graphics OpenGL трёхмерное и прочее

  1. #21
    Excellent for your choice algoritm's Avatar
    Join Date
    Jan 2008
    Location
    Moscow
    Posts
    1,901

    Smile Re: Graphics OpenGL трёхмерное и прочее

    Есть интересная статья и пример как сделать OpenGL программу в Delphi для начинающих программистов.
    http:// dn.codegear.com/ article/ 26401
    где показан один из примеров, увидеть это было радостью

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

    Итак чтобы отобразить хоть что-то на экране надо использовать или glut или wgl команды. :cheer:
    Last edited by algoritm; 06-16-2008 at 01:37 PM.

  2. #22
    подниматель пингвинов crazy-mike's Avatar
    Join Date
    Nov 2006
    Location
    L'viv
    Posts
    179,963

    Default Re: Graphics OpenGL трёхмерное и прочее

    Quote Originally Posted by algoritm
    Интересно как самостоятельно включить отображение OpenGL без специальных библиотек, которые часто авторские, то есть по простому без особенностей, но так чтоб треугольник нарисовать к примеру. :cheer:
    :leader: Если чего-то совсем высокоуpовневого хочется - хватит и Java 2D

  3. #23
    Патриот смешно's Avatar
    Join Date
    Apr 2003
    Location
    Страна чудес
    Posts
    55,561

    Default Re: Graphics OpenGL трёхмерное и прочее

    Quote Originally Posted by algoritm
    Вот и предлагаю в этой теме рассуждать о всех трудностях и вопросах связанных с чем-либо трёхмерным, так что welcome. :cheer:
    О графических двигателях здесь никто пока и слова не сказал.
    Сначала как вообще-то хоть что-нибудь нарисовать.
    Цитирую из википедии:
    "OpenGL (Open Graphics Library — открытая графическая библиотека) — спецификация, определяющая независимый от языка программирования кросс-платформенный программный интерфейс для написания приложений, использующих двумерную и трехмерную компьютерную графику." :cheer:
    Всё прекрасно рисуется и в Java, 3-D, без OpenGL и DirectX.
    4 main reasons why Boston is the best place to live:Red Sox (Baseball), Patriots (Football) World Champions
    Celtics the NBA (Basketball), Bruins Stanley Cup (Hockey)

  4. #24
    подниматель пингвинов crazy-mike's Avatar
    Join Date
    Nov 2006
    Location
    L'viv
    Posts
    179,963

    Default Re: Graphics OpenGL трёхмерное и прочее

    Quote Originally Posted by смешно
    Всё прекрасно рисуется и в Java, 3-D, без OpenGL и DirectX.
    В Java - 3D - как раз и сделано через Open GL ...;)

  5. #25
    Excellent for your choice algoritm's Avatar
    Join Date
    Jan 2008
    Location
    Moscow
    Posts
    1,901

    Cool Re: Graphics OpenGL трёхмерное и прочее

    придумал юнит :



    unit UnitOGL1;

    interface
    uses Windows, Variants, OpenGL;

    {unit is a freeware}
    {and for example in main form you can add to call "DC_GL:=getdc(Form1.Handle);" for
    procedure StartOpenGLGraphics(DC_GL:HDC);}
    {план программы графики OpenGL}

    {действующие элементы:
    PIXELFORMATDESCRIPTOR структура
    wglCreateContext функция создаёт рендеринг контекст
    wglDeleteContext функция удаляет рендеринг контекст
    ChoosePixelFormat функция выбирает формат пикселя
    wglMakeCurrent(hdc,hglrc) функция включает рендеринг контекст
    wglMakeCurrent(NULL,NULL) функция выключает рендеринг контекст
    SetPixelFormat функция устанавливает формат пикселя}

    {правило 1 : сначала выбирают формат пикселя
    и устанавливают его, а потом создают и включают
    рендеринг контекст, после того как все графические
    команды были сделаны рендеринг контекст выключают и удаляют}



    procedure StartOpenGLGraphics(DC_GL:HDC);
    procedure FinishOpenGLGraphics;

    var
    DC_GL:HDC;
    RC_GL:HGLRC;
    pfd_GL:TPIXELFORMATDESCRIPTOR;{это может быть константа}
    NumberOfSelectedPixelFormat_GL:integer;
    SuccessSelectPixelFormat_GL:boolean;
    SuccessSetPixelFormat_GL:boolean;
    SuccessStart_GL:boolean;



    implementation


    procedure StartOpenGLGraphics(DC_GL:HDC);
    begin
    {устанавливается HDC окна вывода графики}
    {параметр процедуры DC_GL:=?;}

    {определяется pfd_GL структура формата пикселя}
    pfd_GL.nSize:=sizeof(TPIXELFORMATDESCRIPTOR);
    pfd_GL.nVersion:=1;
    pfd_GL.dwFlags:=PFD_SUPPORT_OPENGL OR PFD_DRAW_TO_WINDOW OR
    PFD_DOUBLEBUFFER;
    pfd_GL.iPixelType:=PFD_TYPE_RGBA;
    pfd_GL.cColorBits:=24;
    pfd_GL.cAlphaBits:=0;
    pfd_GL.cAccumBits:=0;
    pfd_GL.cDepthBits:=16;
    pfd_GL.cStencilBits:=0;
    pfd_GL.cAuxBuffers:=0;
    pfd_GL.iLayerType:=PFD_MAIN_PLANE;


    {устанавливаются значения логических переменных-результатов}
    SuccessSelectPixelFormat_GL:=true;
    SuccessSetPixelFormat_GL:=true;
    SuccessStart_GL:=true;
    {находится номер выбранного формата пикселя}
    NumberOfSelectedPixelFormat_GL:=ChoosePixelFormat( DC_GL,@pfd_GL);
    {проверяется значение логической переменной-результата}
    {выбора формата пикселя}
    if NumberOfSelectedPixelFormat_GL=0 then SuccessSelectPixelFormat_GL:=false;
    {устанавливается номер и формат пикселя только если выбор успешен}
    if SuccessSelectPixelFormat_GL=true then
    SuccessSetPixelFormat_GL:=SetPixelFormat(DC_GL,
    NumberOfSelectedPixelFormat_GL,@pfd_GL)
    else SuccessSetPixelFormat_GL:=false;
    {проверяется значение логической переменной-результата}
    {установки номера и формата пикселя}
    if (SuccessSelectPixelFormat_GL=true)and
    (SuccessSetPixelFormat_GL=true) then
    begin
    {создаётся рендеринг контекст}
    RC_GL:=wglCreateContext(DC_GL);
    {включается рендеринг контекста}
    wglMakeCurrent(DC_GL,RC_GL);
    end
    else SuccessStart_GL:=false;

    end;


    procedure FinishOpenGLGraphics;
    begin
    {проверяется был ли создан контекст и включён рендеринг}
    if SuccessStart_GL=true then
    begin
    {"However, if a rendering context is the calling
    thread's current context, the wglDeleteContext
    function changes the rendering context to
    being not current before deleting it."
    wglMakeCurrent(NULL,NULL);}
    wglDeleteContext(RC_GL);

    end;

    end;





    end.
    :34: :cool: :leader: :cheer:

  6. #26
    Excellent for your choice algoritm's Avatar
    Join Date
    Jan 2008
    Location
    Moscow
    Posts
    1,901

    Smile Re: Graphics OpenGL трёхмерное и прочее

    В Гугл есть проект SketchUp, это программа для создания трёхмерных объектов, очень интуитивно понятный интерфейс. :cheer:

  7. #27
    Excellent for your choice algoritm's Avatar
    Join Date
    Jan 2008
    Location
    Moscow
    Posts
    1,901

    Smile Re: Graphics OpenGL трёхмерное и прочее

    Да и ещё непонятно почему так долго ждали с реализацией "трёхмерного интерфейса менеджера файлов" типа Аеро в Виста, ведь всё это можно было сделать ещё в Виндоус98, в виде софтваре емулейшон точно. Тоже самое можно сказать и о линукс.
    Могу представить как много разных вариаций этих интерфейсов можно сделать. Просто удивительно, ведь это можно реализовать в два приёма в любой Visual системе программирования на основе OpenGL к примеру, а может быть даже на DirectX, странно что таких программ ещё не продаётся в изобилии через интернет. :cheer:

  8. #28
    Excellent for your choice algoritm's Avatar
    Join Date
    Jan 2008
    Location
    Moscow
    Posts
    1,901

    Smile Re: Graphics OpenGL трёхмерное и прочее

    Есть также программа Blender для создания 3d объектов. :cheer:

  9. #29
    Excellent for your choice algoritm's Avatar
    Join Date
    Jan 2008
    Location
    Moscow
    Posts
    1,901

    Smile Re: Graphics OpenGL трёхмерное и прочее

    Также понятно что чем больше комманд построения графики может выполнить видеокарта тем лучше, но надо также учесть что для работы видеокарты требуется электроэнергия, когда при покупке видеокарты пишут что минимальная мощность блока питания составлять 300w это уже весьма много, и при такой мощности нагрузка на систему охлаждения только повышается, а есть примеры и более высокой мощности в требованиях, мощность определяется большей частотой работы графического процессора и памяти, а также количеством графических конвееров, так что это подходит если рассчитывать брать столько электричества и ресурсов процессора на обслуживаение больших графических вычислений, оптимальной с точки зрения энергопотребления может являться видеокарта которая не потребляет больше 50w и использует в основном только собственную видеопамять с драйвером который практически не использует обычную оперативную память компьютера, качественным является когда количество используемой драйвером видеокарты обычной оперативной памяти можно установить в настройках этого драйвера, потому что эффективно когда графическими командами занимается видеокарта а обычные программные вычисления делает процессор. :cheer:

  10. #30
    подниматель пингвинов crazy-mike's Avatar
    Join Date
    Nov 2006
    Location
    L'viv
    Posts
    179,963

    Default Re: Graphics OpenGL трёхмерное и прочее

    Quote Originally Posted by algoritm
    Также понятно что чем больше комманд построения графики может выполнить видеокарта тем лучше, :cheer:
    :bis: Вы в этом уверены????? (хотя на видеокарте может быть даже и не один GPU - а >=2 :grum: )
    Там есть одна "особенность" - связанная с использованием памяти (у видеокарты практически всегда есть "своя" - которую нужно каким-нибудь способом "наполнять командами и данными"). Больше команд - чем находится в собственном "буфере команд" - видеокарта просто принципиально не может выполнить. :leader:
    Кстати - во всех "открытых системах" библиотека OpenGL чаще всего реализуется средствами библиотеки libMesa. А "OpenGL extentions" - зависящие от конкретной видеокарты - это вообще отдельный разговор. Эти "расширения" вообше не "стандартизированы". Поэтому "кросс-платформные приложения" просто не могут "легальным путём" использовать все эти расширения (правда они в основном в игровых программах и нужны :grum

Page 3 of 5 FirstFirst 12345 LastLast

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Russian America Top. Рейтинг ресурсов Русской Америки. Terms of Service | Privacy Policy Рейтинг@Mail.ru