ì´ì ì°ë¦¬ê° ë§ë ì ì¬ê°íì 5ê°ì ë©´ì ëí´ì 3ì°¨ì ì ì¡ë©´ì²´ë¥¼ ë§ë¤ì´ ë³´ê² ìµëë¤. ì´ ìì
ì ì¡°ê¸ ë í¨ì¨ì ì¼ë¡ í기 ìí´ì drawArray()
ë©ìë를 í¸ì¶í´ì ì ì ì ì§ì í¸ë¤ë§íë ëì ì, ì ì ë°°ì´ì ì¸ë±ì¤ì ê°ì¼ë¡ ì ìë í
ì´ë¸ì´ë¼ê³ ìê°íê³ , ê° ì ì ì ì¸ë±ì¤ë¡ 참조í´ì ì ì¡ë©´ì²´ ê° ë©´ì ì ì ìì¹ë¥¼ ì ìíê³ gl.drawElements()
를 í¸ì¶í´ì ê·¸ë ¤ë³´ê² ìµëë¤.
ê³ ë ¤ ì¬í : ì ì¡ë©´ì²´ì ê° ë©´ì 4ê°ì ì ì ì´ íìíê³ , ì ì¡ë©´ì²´ìë 6ê°ì ë©´ì´ ìì¼ë¯ë¡ ì´ 24ê°ì ì ì ì´ íìí ê² ê°ì§ë§, íëì ì ì ì´ ì¸ ê°ì ë©´ì ê³µíµì ì¼ë¡ ì¬ì©ëë¯ë¡ ì¤ì ë¡ë 8ê°ì ì ì ë§ ìì¼ë©´ ë©ëë¤. ê·¸ë¦¬ê³ ì´ 8ê°ì ì ì ê°ê°ì ì¸ë±ì¤ ë²í¸ë¥¼ 매겨ì 참조íë©´ í ê°ì ì ì ì ì¸ ê°ì ë©´ì ì¬ì¬ì©í ì ììµëë¤. íì§ë§ ì´ë² ìì ììë 8ê°ê° ìëë¼ 24ê°ì ì ì ì ì¬ì©íëë°, ê·¸ ì´ì ë í ê¼ì§ì ìì ë§ëë ì¸ ê°ì ë©´ë§ë¤ ë¤ë¥¸ ììì ì ì©í ê²ì´ê¸° ë문ì ëë¤. íëì ì ì ì í ê°ì ììë§ì ê°ì§ ì ìì¼ë¯ë¡, ì¸ ê°ì ììì íìíë ¤ë©´ ì¸ ê°ì ì ì ì´ íìí©ëë¤. ë°ë¼ì 기ííì ì¼ë¡ë íëì ê¼ì§ì ì¼ì§ë¼ë ì¸ ê°ì ììì íìí기 ìí´ìë ì¸ ê°ì ì ì ì´ íì í©ëë¤.
ì ì¡ë©´ì²´ì ì ì ìì¹ ì ì먼ì initBuffers()
ë´ë¶ì ìë ì½ë를 ìì í´ì ì ì¡ë©´ì²´ì ì ì ë²í¼ë¥¼ ë§ëëë¤. ë°©ìì ì ì¬ê°íì 그릴 ëì ê±°ì ë¹ì·íì§ë§, ì ì ì ìë íëì ë©´ì 4ê° ì©, ì´ 24ê°ë¡ ì ì¬ê°íë³´ë¤ ë ë§ìµëë¤:
var vertices = [
// ìë©´(Front face)
-1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0, 1.0,
// ë¤ë©´(Back face)
-1.0, -1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0, -1.0,
// ìë©´(Top face)
-1.0, 1.0, -1.0, -1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, -1.0,
// ìëë©´(Bottom face)
-1.0, -1.0, -1.0, 1.0, -1.0, -1.0, 1.0, -1.0, 1.0, -1.0, -1.0, 1.0,
// ì¤ë¥¸ìª½ë©´(Right face)
1.0, -1.0, -1.0, 1.0, 1.0, -1.0, 1.0, 1.0, 1.0, 1.0, -1.0, 1.0,
// ì¼ìª½ë©´(Left face)
-1.0, -1.0, -1.0, -1.0, -1.0, 1.0, -1.0, 1.0, 1.0, -1.0, 1.0, -1.0,
];
ì ì ì ìì ì ì
24ê° ì ì ì ìì ë°°ì´ë ë§ë¤ì´ì¼ í©ëë¤. ê° ë©´ì ììì íëì ë°°ì´ë¡ ì ìíê³ , ë°ë³µë¬¸ì ëë©´ì 모ë ì ì ì ìì ì 보를 íëì ë°°ì´ë¡ ë§ëëë¤.
var colors = [
[1.0, 1.0, 1.0, 1.0], // ìë©´ : í°ì
[1.0, 0.0, 0.0, 1.0], // ë¤ë©´ : 빨ê°ì
[0.0, 1.0, 0.0, 1.0], // ìë©´ : ë
¹ì
[0.0, 0.0, 1.0, 1.0], // ìëë©´ : íëì
[1.0, 1.0, 0.0, 1.0], // ì¤ë¥¸ìª½ë©´ : ë
¸ëì
[1.0, 0.0, 1.0, 1.0], // ì¼ìª½ë©´ : ë³´ë¼ì
];
var generatedColors = [];
for (j = 0; j < 6; j++) {
var c = colors[j];
for (var i = 0; i < 4; i++) {
generatedColors = generatedColors.concat(c);
}
}
cubeVerticesColorBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, cubeVerticesColorBuffer);
gl.bufferData(
gl.ARRAY_BUFFER,
new Float32Array(generatedColors),
gl.STATIC_DRAW,
);
ì¸ë±ì¤ ë°°ì´ ì ì
ì ì ë°°ì´ì ë§ë¤ìì¼ë©´ ì¸ë±ì¤ ë°°ì´(ì문 : element array)ì ë§ë¤ì´ì¼ í©ëë¤.
cubeVerticesIndexBuffer = gl.createBuffer();
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, cubeVerticesIndexBuffer);
// ì¸ë±ì¤ ë°°ì´ì íëì ë©´ì ë ê°ì ì¼ê°íì¼ë¡ ì ìí©ëë¤.
// ì¸ë±ì¤ ë°°ì´ì ììì¸ ê° ì«ìë ì ì ë°°ì´ìì í ì ì ì ìì¹ë¥¼ ëíë
ëë¤.
// ì¦, ìëì ì¸ë±ì¤ ë°°ì´ììì 0, 1, 2, 0, 2, 3ì
// ì ì ë°°ì´ìì 0, 1, 2ë²ì§¸ì ì ì ì¼ë¡ ì´ë£¨ì´ì§ ì¼ê°íê³¼
// 0, 2, 3ë²ì§¸ ì ì ì¼ë¡ ì´ë£¨ì´ì§ ì¼ê°í ë ê°ë¡
// íëì ë©´ì ëíë¸ë¤ë ì미ì
ëë¤.
var cubeVertexIndices = [
0,
1,
2,
0,
2,
3, // front
4,
5,
6,
4,
6,
7, // back
8,
9,
10,
8,
10,
11, // top
12,
13,
14,
12,
14,
15, // bottom
16,
17,
18,
16,
18,
19, // right
20,
21,
22,
20,
22,
23, // left
];
// ì¸ë±ì¤ ë°°ì´ì GLì ì ë¬
gl.bufferData(
gl.ELEMENT_ARRAY_BUFFER,
new Uint16Array(cubeVertexIndices),
gl.STATIC_DRAW,
);
cubeVertexIndices
ë°°ì´ì ì ì¡ë©´ì²´ ì ì ë°°ì´ì ì¸ë±ì¤ê°ì ììë¡ ê°ì§ë©°, ê° ì¸ë±ì¤ ê°ì í´ë¹íë ì ì ì ììëë¡ ì¸ ê°ì© 묶ì´ì íëì ì¼ê°íì 구ì±íê³ , ì¼ê°í ë ê°ë¥¼ ììëë¡ ë¬¶ì´ì íëì ë©´ì¼ë¡ ì ìí©ëë¤. ë°ë¼ì 6ê°ì ë©´ì ê°ì§ ì ì¡ë©´ì²´ë 12ê°ì ì¼ê°íì ì¡°í©ì¼ë¡ ííí ì ììµëë¤.
ë¤ì ë¨ê³ë¡ ì ì¡ë©´ì²´ì ì¸ë±ì¤ ë²í¼ë¥¼ ì´ì©í´ì ì ì¡ë©´ì²´ë¥¼ 그릴 ì ìëë¡ drawScene()
í¨ì ë´ë¶ì ì½ë를 ì¶ê° í©ëë¤. ì¸ë±ì¤ ë²í¼ë¥¼ ì¬ì©í기 ìí bindBuffer()
ì ì ì¡ë©´ì²´ë¥¼ 그리기 ìí drawElements()
í¸ì¶ë¬¸ì ì¶ê°í©ëë¤:
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, cubeVerticesIndexBuffer);
setMatrixUniforms();
gl.drawElements(gl.TRIANGLES, 36, gl.UNSIGNED_SHORT, 0);
ì ì¡ë©´ì²´ì ê° ë©´ì´ ë ê°ì ì¼ê°íì¼ë¡ ì´ë£¨ì´ì ¸ ìì¼ë¯ë¡, í ë©´ìë 6ê°ì ì ì ì´ ìì¼ë©°, ì ì¡ë©´ì²´ ì ì²´ë¡ë ì´ 36ê°ì ì ì ì´ ì¡´ì¬í©ëë¤. ì ì ë°°ì´ìë 24ê°ì ì ì ì´ ììì¼ë¯ë¡ 36ê°ì ì ì ì 구ì±íë ¤ë©´ íëì ì ì ì´ ì¬ë¬ë² ì¤ë³µëì´ ì¬ì© ëìì ê² ì ëë¤. ë¹í¨ì¨ì ì´ë¼ê³ ìê°ë ìë ìì§ë§, ì¸ë±ì¤ ë°°ì´ì ì²ë¦¬ê° ë¨ìí ì ìí ë°ì´í°ë¡ë§ 구ì±ëì´ ìì¼ë¯ë¡, 36ê°ì ì ìí ë°°ì´ì´ íëì ì ëë©ì´ì íë ììì ì²ë¦¬í기ì ì§ëì¹ê² ë§ì ìì¤ì ë°ì´í°ë ìëëë¤.
ì´ì ì§ê¸ê¹ì§ ë§ë ì ì¡ë©´ì²´ë¥¼ íì¸ í´ ë³´ê² ìµëë¤. WebGLì ì§ìíë ë¸ë¼ì°ì ììë ì¬ê¸°ìì 6ê°ì ë©´ì´ ììì¼ë¡ ì±ìë ì ì¡ë©´ì²´ë¥¼ ë³¼ ì ììµëë¤.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4