Hej tam! Jako dostawca Canvas jestem bardzo podekscytowany możliwością podzielenia się z Tobą tym, jak stworzyć prostą scenę WebGL na Canvas. WebGL to niesamowita technologia, która umożliwia renderowanie interaktywnej grafiki 3D bezpośrednio w przeglądarce przy użyciu elementu HTML5 Canvas. To potężne narzędzie do tworzenia wciągających wrażeń, z którym łatwiej jest zacząć, niż mogłoby się wydawać.
Co to jest WebGL i Canvas?
Na początek przyjrzyjmy się szybko, czym są WebGL i Canvas. Canvas to element HTML5, który zapewnia powierzchnię do rysowania grafiki. Możesz używać JavaScript do rysowania na płótnie, tworząc wszystko, od prostych kształtów po złożone animacje. Z drugiej strony WebGL to interfejs API JavaScript, który pozwala używać OpenGL ES 2.0 do renderowania grafiki 3D na płótnie. Wykorzystuje procesor graficzny komputera (jednostka przetwarzania grafiki), aby grafika była szybka i płynna.
Konfigurowanie kodu HTML
Aby rozpocząć, musisz utworzyć plik HTML. Oto podstawowy szablon:
<!DOCTYPE html> <html lang="pl"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, origin-scale=1.0"> <title>Prosta scena WebGL</title> <style> canvas { display: block; margines: 0 auto; } </style> </head> <body> <canvas id="webglCanvas" szerokość="800" height="600"></canvas> <script src="script.js"></script> </body> </html>
W tym kodzie tworzymy element Canvas o identyfikatorzewebglCanvasi ustaw jego szerokość i wysokość. Linkujemy także do zewnętrznego pliku JavaScript o nazwieskrypt.jsgdzie napiszemy nasz kod WebGL.
Uzyskiwanie kontekstu WebGL
Przejdźmy teraz do kodu JavaScript. Otwórzskrypt.jsi zacznij od pobrania kontekstu WebGL z pliku Canvas.
// Pobierz element canvas const canvas = document.getElementById('webglCanvas'); // Pobierz kontekst WebGL const gl = canvas.getContext('webgl'); if (!gl) { alert('Nie można zainicjować WebGL. Twoja przeglądarka lub komputer może tego nie obsługiwać.'); powrót; }
W tym kodzie najpierw pobieramy element Canvas na podstawie jego identyfikatora. Następnie próbujemy uzyskać kontekst WebGL z Canvas. Jeśli przeglądarka nie obsługuje WebGL, wyświetlamy alert i zatrzymujemy wykonanie.
Tworzenie programu cieniującego
WebGL używa shaderów do renderowania grafiki. Shadery to małe programy działające na GPU i odpowiedzialne za obliczanie pozycji i kolorów pikseli na ekranie. Istnieją dwa typy shaderów: shadery wierzchołków i shadery fragmentów.
Oto przykład prostego modułu cieniującego wierzchołków i modułu cieniującego fragmenty:


// Kod źródłowy Vertex Shader const vertexShaderSource = ` atrybut vec4 a_position; void main() { gl_Position = a_position; } `; // Kod źródłowy modułu cieniującego fragmenty const fragmentShaderSource = `precyzja mediump float; void main() { gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0); } `; // Funkcja tworząca funkcję cieniującą createShader(gl, type, source) { const shader = gl.createShader(type); gl.shaderSource(shader, źródło); gl.compileShader(Shader); const sukces = gl.getShaderParameter(shader, gl.COMPILE_STATUS); if (sukces) { zwróć moduł cieniujący; } konsola.log(gl.getShaderInfoLog(shader)); gl.deleteShader(Shader); } // Funkcja tworząca program cieniujący funkcja createProgram(gl, vertexShader, fragmentShader) { const program = gl.createProgram(); gl.attachShader(program, vertexShader); gl.attachShader(program, fragmentShader); gl.linkProgram(program); const sukces = gl.getProgramParameter(program, gl.LINK_STATUS); if (sukces) { program zwrotny; } konsola.log(gl.getProgramInfoLog(program)); gl.deleteProgram(program); } // Utwórz moduły cieniujące const vertexShader = createShader(gl, gl.VERTEX_SHADER, vertexShaderSource); const fragmentShader = createShader(gl, gl.FRAGMENT_SHADER, fragmentShaderSource); // Utwórz program cieniujący const program = createProgram(gl, vertexShader, fragmentShader);
W tym kodzie najpierw definiujemy kod źródłowy modułu cieniującego wierzchołków i modułu cieniującego fragmenty. Vertex Shader przyjmuje atrybut pozycji i ustawia pozycję wierzchołka na ekranie. Fragment Shader ustawia kolor pikseli na czerwony.
Następnie tworzymy funkcje do tworzenia shaderów i programów cieniujących. Funkcje te obsługują kompilację i łączenie shaderów. Na koniec tworzymy shadery i program cieniujący.
Tworzenie bufora i rysowanie trójkąta
Teraz, gdy mamy program cieniujący, możemy utworzyć bufor do przechowywania danych wierzchołków i narysować trójkąt.
// Utwórz stały bufor positionBuffer = gl.createBuffer(); // Powiąż bufor z obiektem docelowym ARRAY_BUFFER gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer); // Określ położenie wierzchołków trójkąta const items = [ 0,0, 0,5, -0,5, -0,5, 0,5, -0,5 ]; // Umieść dane o pozycjach w buforze gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(pozycje), gl.STATIC_DRAW); // Sprawdź lokalizację atrybutu a_position const positionAttributeLocation = gl.getAttribLocation(program, 'a_position'); // Włącz atrybut gl.enableVertexAttribArray(positionAttributeLocation); // Powiedz WebGL, jak wyciągnąć dane z bufora const size = 2; typ stały = gl.FLOAT; const normalize = false; stały krok = 0; stałe przesunięcie = 0; gl.vertexAttribPointer(positionAttributeLocation, rozmiar, typ, normalizacja, krok, przesunięcie); // Użyj programu cieniującego gl.useProgram(program); // Wyczyść płótno gl.clearColor(0.0, 0.0, 0.0, 1.0); gl.clear(gl.COLOR_BUFFER_BIT); // Narysuj trójkąt const primitiveType = gl.TRIANGLES; stałe przesunięcieDraw = 0; stała liczba = 3; gl.drawArrays(typ pierwotny, offsetDraw, liczba);
W tym kodzie najpierw tworzymy bufor i wiążemy go z plikiemARRAY_BUFFERcel. Następnie definiujemy położenie wierzchołków trójkąta i umieszczamy dane w buforze.
Następnie sprawdzamy lokalizacjępozycja_atrybut w Vertex Shader i włącz go. Mówimy także WebGL, jak wyciągnąć dane z bufora.
Na koniec używamy programu cieniującego, oczyszczamy płótno i rysujemy trójkąt za pomocąrysuj tablicefunkcjonować.
Korzystanie z naszego Canvas dla projektów WebGL
W naszej firmie oferujemy szeroką gamę wysokiej jakości produktów Canvas, które doskonale sprawdzają się w projektach WebGL. NaszTkanina poliestrowa bawełniana do drukarek atramentowych do ekosolwentu / UV / lateksuto doskonały wybór do drukowania grafiki w wysokiej rozdzielczości. Charakteryzuje się doskonałą reprodukcją kolorów i trwałością, dzięki czemu idealnie nadaje się do tworzenia oszałamiających scen WebGL.
Mamy równieżPłótno poliestrowo-bawełnianektóry doskonale sprawdza się w różnorodnych zastosowaniach. Jest mocny, elastyczny i łatwy w obsłudze, co czyni go popularnym wyborem wśród programistów.
Jeśli szukasz płótna, które obsługuje różne rodzaje atramentów, naszeTkanina poliestrowa, bawełniana do drukarek atramentowych do barwników/pigmentów/uv/lateksuto właściwa droga. Został zaprojektowany do współpracy z szeroką gamą atramentów, zapewniając więcej opcji dla projektów WebGL.
Wniosek
Tworzenie prostej sceny WebGL na płótnie to zabawne i satysfakcjonujące doświadczenie. Przy odrobinie wiedzy na temat WebGL i JavaScript możesz tworzyć niesamowitą grafikę 3D bezpośrednio w swojej przeglądarce. A jeśli szukasz wysokiej jakości płótna do swoich projektów, mamy coś dla Ciebie.
Jeśli interesują Cię nasze produkty Canvas, skontaktuj się z nami, aby uzyskać więcej informacji. Zawsze chętnie pomożemy Ci znaleźć odpowiednie Canvas dla Twoich potrzeb. Niezależnie od tego, czy jesteś profesjonalnym programistą, czy dopiero zaczynasz, możemy zapewnić Ci wsparcie i produkty potrzebne do tworzenia wspaniałych scen WebGL. Nie wahaj się więc z nami skontaktować i już dziś rozpocznij swój kolejny projekt!
Referencje
- „Przewodnik programowania WebGL: programowanie interaktywnej grafiki 3D za pomocą WebGL” autorstwa Kouichi Matsudy i Rodgera Lei
- Dokumentacja WebGL Mozilla Developer Network






