• Artykuły
  • Forum
  • Ciekawostki
  • Encyklopedia
  • OpenGL



    Podstrony: [1] [2] 3 [4] [5]
    Przeczytaj także...
    GPGPU (ang. General-Purpose computing on Graphics Processor Units lub General-Purpose computation on Graphics Processing Units – obliczenia ogólnego przeznaczenia na układach GPU, zwany także GPGP, rzadziej GP) – technika, dzięki której GPU, zwykle zajmujący się tylko obliczeniami związanymi z grafiką komputerową, umożliwia wykonywanie obliczeń ogólnego przeznaczenia, tak jak CPU. Dzięki temu wiele obliczeń, głównie obliczenia równoległe, można przeprowadzić znacznie szybciej.Teksturowanie - technika stosowana w grafice trójwymiarowej, której celem jest przedstawienie szczegółów powierzchni obiektów przestrzennych za pomocą obrazów bitmapowych (tekstur) lub funkcji matematycznych (tekstur proceduralnych). Mapowanie tekstury określa w jaki sposób powiązać piksele (nazywane w tym kontekście tekselami) lub wartości funkcji z powierzchnią obiektu. Tekstury niosą informacje o barwie powierzchni, jak również innych parametrach generowanego obrazu, związanych np. z modelem oświetlenia: barwa światła odbitego, rozproszonego, stopień przezroczystości, współczynnik załamania światła itp.
    Rozszerzenia[ | edytuj kod]

    OpenGL został zaprojektowany w taki sposób, aby producenci sprzętu graficznego mogli rozszerzać jego funkcjonalność poprzez własne rozszerzenia. Rozszerzenia takie dystrybuowane są poprzez publikację zarówno sterowników obsługujących dane funkcje, jak również plików nagłówkowych z definicjami tychże, aby z funkcji tych mogli skorzystać programiści piszący oprogramowanie używające OpenGL.

    Software development kit, SDK – zestaw narzędzi dla programistów niezbędny w tworzeniu aplikacji korzystających z danej biblioteki (np. DirectX SDK), pod dany system (np. Microsoft Platform SDK), sprzęt itp.Matrox – kanadyjska firma dostarczająca sprzęt i rozwiązania do obsługi grafiki (w tym karty graficzne i chipsety), edycji wideo oraz przetwarzania obrazów. Firma znana jest głównie z produkcji kart graficznych przez oddział firmy Matrox Graphics Inc. zwanym MGA.

    Funkcje lub stałe występujące w rozszerzeniach oznaczane są skrótami przyporządkowanymi poszczególnym producentom (np. funkcje firmy NVIDIA oznaczane są skrótem NV). Jeśli funkcja jest używana przez więcej niż jednego producenta, oznaczana jest skrótem EXT, a w przypadku, gdy zostanie oficjalnie zaakceptowana przez Architectural Review Board, staje się ona rozszerzeniem standardowym i otrzymuje oznaczenie ARB. Później, rozszerzenie może się stać oficjalnie częścią standardu OpenGL, w kolejnej jego wersji.

    Renderowanie (od ang. rendering) – przedstawienie informacji zawartych w dokumencie elektronicznym w formie najbardziej właściwej dla danego środowiska (np. wizualnie, w tym na ekranie i w druku, czy dźwiękowo). Mechanizm odpowiedzialny w programie komputerowym za renderowanie nazywa się mechanizmem renderującym (ang. rendering engine, czasem silnik renderujący) lub rendererem (z ang.).Khronos Group została założona w styczniu 2000 roku przez wiodące korporacje w dziedzinie systemów multimedialnych (media-centric), w skład których wchodzą między innymi: 3Dlabs, ATI, Discreet, Evans & Sutherland, Intel, NVIDIA Corporation, SGI, Google i Sun Microsystems. Celem tej organizacji jest tworzenie otwartych standardów API umożliwiających authoring i odtwarzanie w szerokim zakresie mediów na różnorodnych platformach i urządzeniach.

    Przykładowy kod[ | edytuj kod]

    Potok programowalny OpenGL 3.3

    Najmniejszy, najprostszy program wykorzystując możliwości OpenGL składa się z pięciu plików. Głównego pliku programu – main.cpp, klasy wykorzystującej możliwości OpenGL(mainwindow.cpp) oraz nagłówka do tej klasy (mainwindow.h), a także dwóch plików z kodem shaderów.

    NVIDIA Corporation NASDAQ: NVDA – amerykańska firma komputerowa; jeden z największych na świecie producentów procesorów graficznych i innych układów scalonych przeznaczonych na rynek komputerowy. NVIDIA jest także głównym dostawcą (pod względem udziału w rynku) producentów kart graficznych dla komputerów osobistych ze swoją standardową serią GeForce.Sterownik urządzenia to program lub fragment programu odpowiadający za dane urządzenie i pośredniczący pomiędzy nim, a resztą systemu komputerowego. Zwykle uabstrakcyjnia pewne cechy urządzenia, choć może jedynie zajmować się kwestiami uprawnień dostępu i udostępniać urządzenie bez żadnej ingerencji. Wtedy program, który z niego korzysta też jest w pewnym sensie sterownikiem.
    Kolejność przekształceń punktów/wierzchołków

    Przykład został napisany w języku C++ z wykorzystaniem bibliotek Qt. Wykorzystuje on OpenGL w wersji 3.3.

    Niezbędne funkcje i klasy do napisania programu:

    main:

  • QApplication,
  • Nasza nowa klasa wykorzystująca OpenGL,
  • QSurfaceFormat
  • QSufraceFormat::defaultFormat();
  • QSurfaceFormat::setProfile();
  • QSurfaceFormat::setVersion();
  • QSurfaceFormat::setDefaultFormat();
  • mainwindow:

    1) Przygotowanie:

    GLUT (ang. OpenGL Utility Toolkit) – biblioteka użytkowa, która wykonuje głównie operacje wejścia/wyjścia na poziomie systemu operacyjnego.Procesor graficzny, inaczej GPU (ang. Graphics Processing Unit) – jest główną jednostką obliczeniową znajdującą się w nowych kartach graficznych.
  • inicializeOpenGLFunctions();
  • glCreateProgram();
  • glCreateShader();
  • glShaderSource();
  • glCompileShader();
  • glGetShaderiv();
  • glAttachShader();
  • glDeleteShader();
  • glGetShaderInfoLog();
  • glLinkProgram();
  • glGetProgramiv();
  • 3) Obiekty – przygotowanie:

  • glGenVertexArray();
  • glBindVertexArray();
  • glEnableVertexAtribArray();
  • glGenBuffers();
  • glBindBuffer();
  • glBufferData();
  • glVertexAttribPointer();
  • glGenTextures();
  • glActiveTexture();
  • glBindTexture();
  • glTexImage2D()
  • glTexParameteri();
  • 4) Opcjonalne:

  • glGenFramebuffers();
  • glBindFramebuffer();
  • glFramebufferTexture2D();
  • glCheckFramebufferStatus();
  • 5) Rysowanie/Działanie:

    Microsoft Windows (ang. windows „okna”, IPA: [maɪkɹoʊsɑːft ˈwɪndoʊz]) – rodzina systemów operacyjnych stworzonych przez firmę Microsoft. Systemy rodziny Windows działają na serwerach, systemach wbudowanych oraz na komputerach osobistych, z którymi są najczęściej kojarzone. OpenGL Extension Wrangler Library (GLEW) – programistyczna biblioteka międzyplatformowa do języka C/C++, pomagająca w odpytywaniu i ładowaniu rozszerzeń OpenGL. GLEW dostarcza efektywne mechanizmy do określania w czasie uruchamiania programu dostępnych rozszerzeń na danej platformie. Wszystkie rozszerzenia OpenGL są wylistowane w jednym pliku nagłówkowym, który z kolei jest maszynowo generowany na podstawie oficjalnej listy rozszerzeń. GLEW jest dostępny na wielu platformach, np. Windows, Linux, Mac OS X, FreeBSD, IRIX i Solaris. GLEW jest dystrybuowany na warunkach zmodyfikowanej licencji BSD.
  • glGetIntegerv();
  • glBindFramebuffer();
  • glViewport();
  • glClear();
  • glUseProgram();
  • glActiveTexture();
  • glBindTexture()
  • glGetUniformLocation();
  • glUniform1i();
  • glBindVertexArray();
  • glDrawArrays();
  • Niezbędne makra:

  • GL_VERTEX_SHADER,
  • GL_COMPILE_STATUS,
  • GL_FRAGMENT_SHADER,
  • GL_LINK_STATUS,
  • GL_ARRAY_BUFFER,
  • GL_STATIC_DRAW,
  • GL_FALSE,
  • GL_FLOAT,
  • GL_TEXTURE0,
  • GL_TEXTURE_2D,
  • GL_RGBA,
  • GL_BGRA,
  • GL_UNSIGNED_BYTE,
  • GL_TEXTURE_MIN_FILTER,
  • GL_LINEAR,
  • GL_COLOR_BUFFER_BIT,
  • GL_TRIANGLES,
  • Dodatkowe makra:

  • GL_FRAMEBUFFER,,
  • GL_COLOR_ATTACHMENT0,
  • GL_DRAW_FRAMEBUFFER_BINDING,
  • Szczegóły na temat poszczególnych funkcji oraz makr podane są na stronie dokumentacji OpenGL.

    Automat skończony (ang. finite state machine, FSM) – abstrakcyjny, matematyczny, iteracyjny model zachowania systemu dynamicznego oparty na tablicy dyskretnych przejść między jego kolejnymi stanami (diagram stanów).Mipmapping to technika teksturowania bitmapami wykorzystywana w grafice trójwymiarowej, która pozwala uniknąć artefaktów i tym samym uzyskać lepszą jakość obrazów. Także przyspiesza sam proces teksturowania. Mipmapping został opracowany przez Lance Williamsa w 1983 roku.

    Plik main.cpp

     1 # include "mainwindow.h"
     2 # include <QApplication>
     3 # include <QSurfaceFormat>
     4 
     5 int main(int argc, char *argv)
     6 {
     7     QApplication a(argc, argv);
     8 
     9     QSurfaceFormat format = QSurfaceFormat::defaultFormat();
    10     format.setProfile(QSurfaceFormat::CoreProfile);
    11     format.setVersion(3,3);
    12     QSurfaceFormat::setDefaultFormat(format);
    13 
    14     MainWindow w;
    15     w.show();
    16 
    17     return a.exec();
    18 }
    

    Plik mainwindow.h

    DirectX – zestaw funkcji API wspomagających generowanie grafiki (dwu- i trójwymiarowej), dźwięku oraz innych zadań związanych zwykle z grami i innymi aplikacjami multimedialnymi.ATI Technologies Inc. (gdzie ATI jest skrótem od Array Technologies Incorporated) NASDAQ: ATYT – to kanadyjski producent układów scalonych, znany głównie ze swoich kart graficznych. Notowany na giełdach w Toronto i NASDAQ.
     1 # ifndef MAINWINDOW_H
     2 # define MAINWINDOW_H
     3 
     4 //#include <QMainWindow>
     5 # include <QOpenGLFunctions_3_3_Core>
     6 # include <QOpenGLWidget>
     7 
     8 class MainWindow : public QOpenGLWidget, protected QOpenGLFunctions_3_3_Core //public QMainWindow,
     9 {
    10     //Q_OBJECT
    11 
    12     GLuint uchwytProg1; //unsigned int
    13 
    14     GLuint VertexArrayO;  // Vertex Array Object
    15     int ilWierz;   //ilosc wierzcholkow
    16 
    17     GLuint tex0;
    18 
    19 public:
    20     MainWindow();
    21     ~MainWindow();
    22 
    23     void initializeGL();
    24     void paintGL();
    25     void resizeGL(int w, int h);
    26 };
    27 
    28 # endif // MAINWINDOW_H
    

    Plik mainwindow.cpp

    OpenGL Architecture Review Board (ARB, OpenGL ARB) – zrzeszenie firm, zajmujące się rozwojem biblioteki OpenGL. Utworzone w 1992 roku ustanawia nowe standardy grafiki 3D oraz kierunku rozwoju sektora graficznego, przygotowuje, testuje i zatwierdza zmiany w specyfikacji, a także przygotowuje oficjalne aktualizacje biblioteki. 31 lipca 2006 r. kontrola na biblioteką OpenGL zostały przekazane do Khronos Group.Otwarty standard – standard, do którego pełnej specyfikacji dostęp nie jest limitowany prawnie, finansowo lub tajemnicą handlową firmy, która standard opracowała. Ponadto standard uznawany jako otwarty jest opracowywany, zatwierdzany oraz później ewentualnie modyfikowany przez porozumienie (organizację) zainteresowanych tworzeniem tego standardu podmiotów, działające niedochodowo i zapewniające członkostwo wszystkim zainteresowanym.
      1 # include "mainwindow.h"
      2 
      3 # include <QOpenGLFunctions_3_3_Core>
      4 # include <QFile>
      5 # include <Qdebug>
      6 
      7 struct vec3 { float x,y,z; };
      8 
      9 MainWindow::MainWindow() //QMainWindow(parent)
     10 { }
     11 
     12 MainWindow::~MainWindow()
     13 { }
     14 
     15 void MainWindow::initializeGL()
     16 {
     17     initializeOpenGLFunctions();
     18 
     19     qDebug() << "initializeGL";
     20 
     21     GLint status;
     22 
     23     // program kopiujący teksture na ekran
     24     uchwytProg1 = glCreateProgram();
     25 
     26     QFile file("vshaderS.sh");
     27     if(file.open(QFile::ReadOnly))
     28     {
     29         QTextStream stream(&file);
     30         std::string vshader_zrodlo = stream.readAll().toStdString();
     31 
     32         GLuint shader = glCreateShader(GL_VERTEX_SHADER);
     33         GLchar* srcs = {(GLchar*)vshader_zrodlo.c_str()};
     34         glShaderSource(shader, 1, srcs, NULL);
     35         glCompileShader(shader);
     36 
     37         glGetShaderiv(shader, GL_COMPILE_STATUS, &status); //skompilowany
     38         if( status == true )
     39         {
     40             glAttachShader(uchwytProg1, shader);
     41             glDeleteShader(shader);
     42         } else { qDebug() << "Shadera nie skompilowano. V"; }
     43          qDebug() << "BB" << vshader_zrodlo.c_str();
     44     } else qDebug() << "Brak pliku";
     45     file.close();
     46 
     47     QFile file2("fshaderS.sh");
     48     if(file2.open(QFile::ReadOnly))
     49     {
     50         QTextStream stream(&file2);
     51         std::string vshader_zrodlo = stream.readAll().toStdString();
     52 
     53         GLuint shader = glCreateShader(GL_FRAGMENT_SHADER);
     54         GLchar* srcs = {(GLchar*)vshader_zrodlo.c_str()};
     55         glShaderSource(shader, 1, srcs, NULL);
     56         glCompileShader(shader);
     57         glGetShaderiv(shader, GL_COMPILE_STATUS, &status); //skompilowany
     58         if( status == true )
     59         {
     60             glAttachShader(uchwytProg1, shader);
     61             glDeleteShader(shader);
     62         } else {
     63             qDebug() << "Błąd komp. szhadera. F";
     64             GLchar infoLog[10240];
     65             glGetShaderInfoLog(shader, 10240, NULL, infoLog);
     66             qDebug() << infoLog << endl;
     67         }
     68 
     69         qDebug() << "AA" << srcs;
     70     } else qDebug() << "Brak pliku";
     71     file2.close();
     72 
     73     glLinkProgram(uchwytProg1);
     74     glGetProgramiv(uchwytProg1, GL_LINK_STATUS, &status);
     75     if( status == true) { qDebug() << "Program przygotowany"; }
     76     else qDebug() << "Problemy z programem.";
     77 
     78     glUseProgram(uchwytProg1);
     79     GLint polozenie = glGetUniformLocation(uchwytProg1, "textura");
     80     qDebug() << "Polozenie, textura: " << polozenie;
     81 
     82     // prostokat na cały ekran
     83     vec3 wierzcholki = { {-1,-1,0}, {1,-1,0}, //Dwa trójkąty...
     84                            {1,1,0},    {1,1,0},
     85                            {-1,1,0},   {-1,-1,0} };
     86 
     87     ilWierz = 6;
     88 
     89     glGenVertexArrays(1, &VertexArrayO);
     90         glBindVertexArray(VertexArrayO);
     91         glEnableVertexAttribArray(0); //włączenie obsługi konkretnej tablicy atrybutów,
     92 
     93         //wygenerowanie nazwy bufora dla atrybutu i dodanie do mapy pod konkretnym indexem
     94             GLuint buforVertex;
     95             glGenBuffers(1, &buforVertex);
     96 
     97         // przypisanie bufora do tablicy vao
     98             glBindBuffer(GL_ARRAY_BUFFER, buforVertex);
     99 
    100         // stworzenie bufora i skopiowanie do niego danych
    101             glBufferData(GL_ARRAY_BUFFER, ilWierz*sizeof(vec3), wierzcholki, GL_STATIC_DRAW);
    102 
    103         // ustawienie odpowiednich typow i wielkosci bufora wierzcholkow vbo
    104             glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);
    105 
    106        glBindBuffer(GL_ARRAY_BUFFER, 0);
    107    glBindVertexArray(0);
    108 
    109     glGenTextures(1, & tex0);
    110 
    111     glActiveTexture(GL_TEXTURE0);
    112 
    113     // tekstura wczytana z pliku
    114         QImage img("lena.png");
    115         if(img.width() == 0) qt_assert("QImage not loaded!", __FILE__, __LINE__);
    116 
    117         glBindTexture(GL_TEXTURE_2D, tex0);
    118             glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, img.width(), img.height(), 0, GL_BGRA, GL_UNSIGNED_BYTE, img.bits());
    119             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    120 
    121         glBindTexture(GL_TEXTURE_2D, 0);
    122 }
    123 
    124 void MainWindow::resizeGL(int w, int h)
    125 {
    126     qDebug() << "resizeGL";
    127 }
    128 
    129 void MainWindow::paintGL()
    130 {
    131     qDebug() << "PaintGL – rysuje";
    132 
    133     GLuint polozenie;
    134 
    135     /* niektore implementacje nie przypisuja domyslnego FB ekranu == 0
    136         wtedy trzeba zapamietac samemu jego numer: */
    137         GLint screenFB;
    138         glGetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &screenFB);
    139         qDebug() << "Numer dla ScreenFramebuffer:  " << screenFB;
    140 
    141         int tryb = 1;
    142 
    143     if( tryb == 1 )
    144     {
    145         // rysowanie tekstury na domyslnym FrameBufferze
    146 
    147         // glBindFramebuffer(GL_FRAMEBUFFER, 0);
    148         // lub
    149         glBindFramebuffer(GL_FRAMEBUFFER, screenFB);
    150         glViewport(0,0,width(), height());
    151 
    152         glClear(GL_COLOR_BUFFER_BIT);
    153 
    154         glUseProgram(uchwytProg1);
    155 
    156             // Ustawienie tekstury
    157             polozenie = glGetUniformLocation(uchwytProg1, "textura");
    158             if(polozenie != -1) glUniform1i(polozenie, 0); else qDebug() << "Brak zmiennej Uniform textura";
    159 
    160             glActiveTexture(GL_TEXTURE0);
    161             glBindTexture(GL_TEXTURE_2D, tex0);
    162 
    163             glBindVertexArray(VertexArrayO);
    164                 glDrawArrays(GL_TRIANGLES, 0, ilWierz);
    165             glBindVertexArray(0);
    166 
    167             glBindTexture(GL_TEXTURE_2D, tex0);
    168             glViewport(width()/2.0, 0, width()/2.0, height());
    169 
    170             glBindVertexArray(VertexArrayO);
    171                 glDrawArrays(GL_TRIANGLES, 0, ilWierz);
    172             glBindVertexArray(0);
    173 
    174         glUseProgram(0);
    175     }
    176 }
    

    Plik vshader.glsl – Shader Vertexów – Shader wierzchołków:

    OpenGL Shading Language (GLSL, glslang) – język programowania potoku graficznego składniowo zbliżony do języka C, wykorzystywany przez bibliotekę OpenGL. Program napisany w GLSL wykonywany jest bezpośrednio na GPU.Apple Inc. (wcześniej Apple Computer Inc.) NASDAQ: AAPL – amerykańska korporacja zajmująca się projektowaniem i produkcją elektroniki użytkowej, oprogramowania i komputerów osobistych z siedzibą w Cupertino w Kalifornii. Założona przez Steve’a Wozniaka – projektanta, Steve’a Jobsa i Ronalda Wayne’a. Produkty spółki to m.in.: komputery Mac, iPod, iPhone i iPad. Oprogramowanie Apple obejmuje system operacyjny OS X, przeglądarkę multimediów iTunes, pakiet oprogramowania multimedialnego i kreatywności iLife, pakiet oprogramowania biurowego iWork, profesjonalny pakiet fotografii Aperture, pakiet profesjonalnych rozwiązań wideo Final Cut Studio oraz zestaw narzędzi audio Logic Studio. Od stycznia 2010 roku firma działa poprzez 284 własnych sklepów detalicznych w dziesięciu krajach, oraz za pośrednictwem sklepu internetowego sprzedającego zarówno sprzęt, jak i oprogramowanie.
    # version 330
    
    layout (location=0) in vec3 VertexPosition; //atrybut zerowy,
                       out vec2 textureCoords;
    
    void main()
    {
        //Macierz skalowania,
        mat4 macierz = mat4(1, 0, 0, 0,
                            0, 1, 0, 0,
                            0, 0, 1, 0,
                            0, 0, 0, 1);
    
        vec4 a = vec4(VertexPosition.x, VertexPosition.y, VertexPosition.z, 1);
        vec4 b = a * macierz;
    
        // Macierz translacji – przesuwania
        mat4 macierzTran = mat4(  1, 0, 0, 0,
                                  0, 1, 0, 0,
                                  0, 0, 1, 0,
                                  0, 0, 0, 1);
    
        b = b * macierzTran;
    
        gl_Position = b;
        // lub:
        //gl_Position = vec4(VertexPosition, 1); //-- wówczas będzie bez rotacji i bez translacji
        textureCoords = VertexPosition.xy * 0.5f + 0.5f;
    }
    

    Plik fshader.glsl – Shader Fragmentów:

    Pliki nagłówkowe – przy kompilatorze języka C i pochodnych (C++ itp.) pliki źródłowe o rozszerzeniu "h" (w C++ powinno się dla odróżnienia stosować "hpp", ale w praktyce najczęściej spotykane jest nadal rozszerzenie "h") zawierające opis interfejsu modułu: deklaracje zmiennych, funkcji, klas i innych struktur danych. Używa się ich po to, by nie trzeba było przy każdej najmniejszej zmianie w implementacji jednego modułu rekompilować wszystkich innych odwołujących się do niego. W nowszych językach takich jak Java czy C# nie ma już potrzeby stosowania plików nagłówkowych.freeglut to otwarta implementacja biblioteki GLUT. GLUT (a więc również freeglut) pozwala użytkownikowi tworzyć i zarządzać oknami używającymi OpenGL na wielu platformach. Pozwala również obsługiwać mysz, klawiaturę i dżojstik. freeglut jest w zamierzeniu dokładnym zastępnikiem GLUT i różni się w zaledwie kilku punktach.
     1 # version 330 //Dyrektywa informująca o wersji OpenGL'a
     2 
     3 // Zmienne wbudowane shadera:
     4 // in vec4 gl_FragCoord
     5 // in bool gl_FrontFacing
     6 // in vec2 gl_PointCoord
     7 
     8 uniform sampler2D tekstura;
     9           in vec2 teksturaCoords;
    10          out vec4 FragColor; //Obowiązkowa zmienna wyjściowa
    11 
    12 //fragment shader kopiujacy texele z tekstury na wyjscie
    13 
    14 void main()
    15 {
    16     //vec2 jest wbudowanym typem [wektor dwuelementowy]
    17     vec2 tc = vec2(teksturaCoords.x, 1-teksturaCoords.y );
    18 
    19     FragColor = texture(tekstura, tc);
    20     // discard; – spowoduje nie nadanie wartości danemu tekslowi, na danych współrzędnych
    21 }
    

    Zobacz też[ | edytuj kod]

  • Mesa
  • Direct3D
  • OpenGL Shading Language
  • Shadery
  • OpenGL Extension Wrangler Library (GLEW)
  • Hewlett-Packard Company (HP), NYSE: HPQ - amerykańska firma informatyczna z siedzibą w Palo Alto w Kalifornii. W 2010 roku druga pod względem obrotów największa firma informatyczna świata. Producent m.in. komputerów osobistych, serwerów, drukarek i urządzeń poligraficznych oraz dostawca usług IT. W 1999 z HP wyodrębniono działy produkujące elektroniczny sprzęt pomiarowy, podzespoły oraz sprzęt medyczny i naukowy, formując osobną spółkę Agilent Technologies. W 2002 firma przejęła konkurenta Compaq Computer. W roku 2010 firma zatrudniała na całym świecie ok. 324 tys. osób.Bufor Z (bufor głębokości lub głębi) - wykorzystywany w systemach wyświetlających obrazy trójwymiarowe, przechowuje współrzędną Z (głębokość, odległość od obserwatora) dla każdego piksela obrazu. Stawianie pojedynczego piksela przebiega według algorytmu: jeśli współrzędna Z danego piksela jest mniejsza od współrzędnej Z zapisanej w buforze (piksel znajduje się bliżej obserwatora) można postawić piksel i uaktualnić wpis w buforze.


    Podstrony: [1] [2] 3 [4] [5]



    w oparciu o Wikipedię (licencja GFDL, CC-BY-SA 3.0, autorzy, historia, edycja)

    Warto wiedzieć że... beta

    Shader – krótki program komputerowy, często napisany w specjalnym języku (shader language), który w grafice trójwymiarowej opisuje właściwości pikseli oraz wierzchołków. Technologia ta zastąpiła stosowaną wcześniej jednostkę T&L.
    Dell (właściwie Dell Computer Corporation) NASDAQ: DELL – amerykańska międzynarodowa korporacja z siedzibą w Round Rock w stanie Teksas. Zajmuje się produkcją komputerów i urządzeń peryferyjnych oraz ich serwisowaniem. Spółka jest notowana na 41 miejscu w rankingu Fortune 500.
    Grafika komputerowa – dziedzina informatyki zajmująca się wykorzystaniem technik komputerowych do celów wizualizacji artystycznej oraz wizualizacji rzeczywistości. Grafika komputerowa jest obecnie narzędziem powszechnie stosowanym w nauce, technice oraz rozrywce.
    Klient-serwer ((ang.) client/server, client-server model) – architektura systemu komputerowego, w szczególności oprogramowania, umożliwiająca podział zadań (ról). Polega to na ustaleniu, że serwer zapewnia usługi dla klientów, zgłaszających do serwera żądania obsługi ((ang.) service request).
    Sun Microsystems Inc. (NASDAQ: JAVA, do września 2007 – NASDAQ: SUNW) – nieistniejąca już firma informatyczna, jeden z najważniejszych producentów sprzętu komputerowego, oprogramowania komputerowego i rozwiązań sieciowych. Siedziba główna znajdowała się w Santa Clara w Kalifornii.
    OpenGL ES (ang. OpenGL for Embedded Systems) – podzbiór OpenGL 3D zaprojektowany m.in. dla urządzeń mobilnych typu telefony komórkowe, palmtopy i konsole do gier. Jest zdefiniowany i rozpowszechniany przez Khronos Group.
    IBM (ang. International Business Machines Corporation; potocznie zwany Big Blue, NYSE: IBM) – jeden z najstarszych koncernów informatycznych.

    Reklama

    Czas generowania strony: 0.043 sek.