WebGL - Bağlam
Bir WebGL uygulaması yazmak için ilk adım, WebGL oluşturma bağlamı nesnesini almaktır. Bu nesne, WebGL çizim arabelleği ile etkileşime girer ve tüm WebGL yöntemlerini çağırabilir. WebGL içeriğini elde etmek için aşağıdaki işlemler gerçekleştirilir -
- HTML-5 tuvali oluşturun
- Tuval kimliğini alın
- WebGL edinin
HTML-5 Canvas Elemanı Oluşturma
Bölüm 5'te, bir HTML-5 kanvas elemanının nasıl oluşturulacağını tartıştık. HTML-5 belgesinin gövdesi içine bir tuval yazın, ona bir ad verin ve bunu bir parametre olarak öznitelik kimliğine iletin. Genişlik ve yükseklik niteliklerini (isteğe bağlı) kullanarak kanvasın boyutlarını tanımlayabilirsiniz.
Misal
Aşağıdaki örnek, 500 × 500 boyutlarında bir kanvas elemanının nasıl oluşturulacağını göstermektedir. Görünürlük için CSS kullanarak tuval için bir sınır oluşturduk. Aşağıdaki kodu kopyalayıp adıyla bir dosyaya yapıştırınmy_canvas.html.
<!DOCTYPE HTML>
<html>
<head>
<style>
#mycanvas{border:1px solid blue;}
</style>
</head>
<body>
<canvas id = "mycanvas" width = "300" height = "300"></canvas>
</body>
</html>
Aşağıdaki sonucu verecektir -
Canvas kimliğini alın
Tuvali oluşturduktan sonra, WebGL bağlamını almanız gerekir. Bir WebGL çizim içeriği elde etmek için yapılacak ilk şey, geçerli tuval öğesinin kimliğini almaktır.
Tuval kimliği, DOM (Belge Nesne Modeli) yöntemi çağrılarak elde edilir getElementById(). Bu yöntem parametre olarak bir dize değerini kabul eder, bu nedenle mevcut tuvalin adını ona iletiriz.
Örneğin, tuval adı my_canvas, ardından aşağıda gösterildiği gibi tuval kimliği elde edilir−
var canvas = document.getElementById('my_Canvas');
WebGL Çizim Bağlamını Edinin
WebGLRenderingContext nesnesini (veya WebGL Drawing bağlam nesnesini veya yalnızca WebGL bağlamını) almak için, getContext() akım yöntemi HTMLCanvasElement. GetContext () sözdizimi aşağıdaki gibidir -
canvas.getContext(contextType, contextAttributes);
Dizeleri geç webgl veya experimental-webgl olarak contentType. contextAttributesparametresi isteğe bağlıdır. (Bu adıma devam ederken, tarayıcınızın WebGL sürüm 1'i (OpenGL ES 2.0) uyguladığından emin olun ).
Aşağıdaki kod parçacığı, WebGL oluşturma bağlamının nasıl elde edileceğini gösterir. Burayagl elde edilen bağlam nesnesinin referans değişkenidir.
var canvas = document.getElementById('my_Canvas');
var gl = canvas.getContext('experimental-webgl');
WebGLContextAttributes
Parametre WebGLContextAttributeszorunlu değildir. Bu parametre, aşağıda listelendiği gibi Boole değerlerini kabul eden çeşitli seçenekler sağlar -
Sr.No. | Öznitelikler ve Açıklama |
---|---|
1 | Alpha Değeri true ise, tuvale bir alfa arabelleği sağlar. Varsayılan olarak değeri doğrudur. |
2 | depth Değeri true ise, en az 16 bitlik bir derinlik tamponu içeren bir çizim tamponu alacaksınız. Varsayılan olarak değeri doğrudur. |
3 | stencil Değeri true ise, en az 8 bitlik bir şablon tamponu içeren bir çizim tamponu elde edersiniz. Varsayılan olarak değeri yanlıştır. |
4 | antialias Değeri true ise, kenar yumuşatma uygulayan bir çizim tamponu elde edersiniz. Varsayılan olarak değeri doğrudur. |
5 | premultipliedAlpha Değeri true ise, önceden çarpılmış alfaya sahip renkleri içeren bir çizim tamponu elde edersiniz. Varsayılan olarak değeri doğrudur. |
6 | preserveDrawingBuffer Değeri doğruysa, tamponlar temizlenmez ve yazar tarafından temizlenene veya üzerine yazılana kadar değerlerini korur. Varsayılan olarak değeri yanlıştır. |
Aşağıdaki kod parçacığı, bir şablon arabelleği ile bir WebGL bağlamının nasıl oluşturulacağını gösterir; anti-aliasing.
var canvas = document.getElementById('canvas1');
var context = canvas.getContext('webgl', { antialias: false, stencil: true });
WebGLRenderingContext oluşturulurken bir çizim tamponu oluşturulur. Context nesnesi OpenGL durumunu yönetir ve çizim arabelleğinde işler.
WebGLRenderingContext
WebGL'deki ana arayüzdür. WebGL çizim bağlamını temsil eder. Bu arayüz, Çizim arabelleğinde çeşitli görevleri gerçekleştirmek için kullanılan tüm yöntemleri içerir. Bu arayüzün nitelikleri aşağıdaki tabloda verilmiştir.
Sr.No. | Öznitelikler ve Açıklama |
---|---|
1 | Canvas Bu, bu bağlamı yaratan tuval öğesine bir referanstır. |
2 | drawingBufferWidth Bu özellik, çizim arabelleğinin gerçek genişliğini temsil eder. HTMLCanvasElement'in genişlik özelliğinden farklı olabilir. |
3 | drawingBufferHeight Bu özellik, çizim tamponunun gerçek yüksekliğini temsil eder. HTMLCanvasElement'in yükseklik özelliğinden farklı olabilir. |