本文整理汇总了C#中WebGLRenderingContext.drawElements方法的典型用法代码示例。如果您正苦于以下问题:C# WebGLRenderingContext.drawElements方法的具体用法?C# WebGLRenderingContext.drawElements怎么用?C# WebGLRenderingContext.drawElements使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WebGLRenderingContext
的用法示例。
在下文中一共展示了WebGLRenderingContext.drawElements方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: drawObject
void drawObject(WebGLRenderingContext gl, foo shader, bar @object)
{
gl.useProgram(shader.program);
gl.bindBuffer(gl.ARRAY_BUFFER, @object.vertex_buffer);
gl.vertexAttribPointer((uint)shader.aVertexPosition, 3, gl.FLOAT, false, 0, 0);
gl.bindBuffer(gl.ARRAY_BUFFER, @object.texturecoord_buffer);
gl.vertexAttribPointer((uint)shader.aTextureCoord, 2, gl.FLOAT, false, 0, 0);
gl.activeTexture(gl.TEXTURE0);
gl.bindTexture(gl.TEXTURE_2D, @object.t["texture1"]);
gl.uniform1i(shader.u["uSamplerDiffuse1"], 0);
gl.activeTexture(gl.TEXTURE1);
gl.bindTexture(gl.TEXTURE_2D, @object.t["texture2"]);
gl.uniform1i(shader.u["uSamplerDiffuse2"], 1);
gl.activeTexture(gl.TEXTURE2);
gl.bindTexture(gl.TEXTURE_2D, @object.t["texture3"]);
gl.uniform1i(shader.u["uSamplerDiffuse3"], 2);
gl.activeTexture(gl.TEXTURE3);
gl.bindTexture(gl.TEXTURE_2D, @object.t["texture4"]);
gl.uniform1i(shader.u["uSamplerDiffuse4"], 3);
gl.activeTexture(gl.TEXTURE4);
gl.bindTexture(gl.TEXTURE_2D, @object.t["texture5"]);
gl.uniform1i(shader.u["uSamplerDiffuse5"], 4);
gl.activeTexture(gl.TEXTURE5);
gl.bindTexture(gl.TEXTURE_2D, @object.t["texture6"]);
gl.uniform1i(shader.u["uSamplerDiffuse6"], 5);
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, @object.index_buffer);
gl.uniformMatrix4fv(shader.u["uProjectionMatrix"], false, shader.PROJECTION_MATRIX);
gl.uniformMatrix4fv(shader.u["uModelViewMatrix"], false, shader.MV_MATRIX);
gl.drawElements(gl.TRIANGLES, @object.n_elements, gl.UNSIGNED_SHORT, 0);
}
示例2: Application
//.........这里部分代码省略.........
//__mat4.rotate(pMatrix, pMatrix, (float)Math.PI + mx * 0.005f, new float[] { 0, 1f, 0f });
__mat4.rotate(pMatrix, pMatrix, mx * 0.005f, new float[] { 0, 1f, 0f });
#endregion
//var cubesize = 1.0f * 0.05f;
if (vertexTransform.Length == 0)
{
__mat4.identity(mvMatrix);
__mat4.translate(mvMatrix, mvMatrix, new float[] { -1.5f, 0.0f, -3.0f });
#region windwheel
mvPushMatrix();
__mat4.rotate(mvMatrix, mvMatrix, degToRad(rWind), new float[] { 0, 1f, 0f });
#region DrawFrameworkWingAtX
Action<float, float> DrawFrameworkWingAtX = (WingX, WingY) =>
{
mvPushMatrix();
__mat4.translate(mvMatrix, mvMatrix, new float[] { cubesize * WingX, cubesize * WingY, 0 });
gl.bindBuffer(gl.ARRAY_BUFFER, cubeVertexPositionBuffer);
gl.vertexAttribPointer((uint)shaderProgram_vertexPositionAttribute, cubeVertexPositionBuffer_itemSize, gl.FLOAT, false, 0, 0);
gl.bindBuffer(gl.ARRAY_BUFFER, squareVertexColorBuffer);
gl.vertexAttribPointer((uint)shaderProgram_vertexColorAttribute, cubeVertexColorBuffer_itemSize, gl.FLOAT, false, 0, 0);
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, cubeVertexIndexBuffer);
setMatrixUniforms();
gl.drawElements(gl.TRIANGLES, cubeVertexPositionBuffer_numItems, gl.UNSIGNED_BYTE, 0);
mvPopMatrix();
};
#endregion
#region DrawWingAtX
Action<int, int, float, float> DrawWingAtX = (WingX, WingSize, WingRotationMultiplier, WingRotationOffset) =>
{
mvPushMatrix();
__mat4.translate(mvMatrix, mvMatrix, new float[] { cubesize * WingX, 0, 0 });
if (WingRotationOffset == 0)
{
DrawFrameworkWingAtX(0, 0);
}
#region DrawWingPart
Action<float> DrawWingPart = PartIndex =>
{
mvPushMatrix();
__mat4.rotate(mvMatrix, mvMatrix, degToRad(WingRotationOffset + (rCube * WingRotationMultiplier)), new float[] { 1f, 0f, 0f });
__mat4.translate(mvMatrix, mvMatrix, new float[] { 0f, cubesize * PartIndex * 2, 0 });
gl.bindBuffer(gl.ARRAY_BUFFER, cubeVertexPositionBuffer);
gl.vertexAttribPointer((uint)shaderProgram_vertexPositionAttribute, cubeVertexPositionBuffer_itemSize, gl.FLOAT, false, 0, 0);
gl.bindBuffer(gl.ARRAY_BUFFER, squareVertexColorBuffer);
gl.vertexAttribPointer((uint)shaderProgram_vertexColorAttribute, cubeVertexColorBuffer_itemSize, gl.FLOAT, false, 0, 0);
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, cubeVertexIndexBuffer);
setMatrixUniforms();
gl.drawElements(gl.TRIANGLES, cubeVertexPositionBuffer_numItems, gl.UNSIGNED_BYTE, 0);
示例3: Initialize
//.........这里部分代码省略.........
gl.viewport(0, 0, w, h);
gl.enableVertexAttribArray(0);
var verts = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, verts);
gl.bufferData(gl.ARRAY_BUFFER,
new[] { -1f, -1f, -1f, 1f, 1f, -1f, 1f, 1f }
, gl.STATIC_DRAW);
gl.vertexAttribPointer((uint)0, 2, gl.FLOAT, false, 0, 0);
var indicies = gl.createBuffer();
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indicies);
var q = new Uint16Array(0, 1, 2, 3);
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, q, gl.STATIC_DRAW);
var start = new IDate().getTime();
Native.window.onframe += delegate
{
var timestamp = new IDate().getTime();
var t = (timestamp - start) / 1000.0f * 30f;
uniforms.t = t * 100;
//gl.uniform1f(gl.getUniformLocation(p, "t"), t * 100);
gl.drawElements(gl.TRIANGLE_STRIP, 4, gl.UNSIGNED_SHORT, 0);
gl.flush();
};
#region AtResize
Action AtResize = delegate
{
if (IsDisposed)
{
return;
}
canvas.width = Native.window.Width;
canvas.height = Native.window.Height;
gl.viewport(0, 0, canvas.width, canvas.height);
};
AtResize();
Native.window.onresize += delegate
{
AtResize();
};
#endregion
示例4: InitializeContent
//.........这里部分代码省略.........
gl.uniform1i(shaderProgram.showSpecularHighlightsUniform, Convert.ToInt32(false));
gl.uniform1i(shaderProgram.useTexturesUniform, Convert.ToInt32(true));
gl.uniform3f(shaderProgram.materialAmbientColorUniform, 1.0f, 1.0f, 1.0f);
gl.uniform3f(shaderProgram.materialDiffuseColorUniform, 1.0f, 1.0f, 1.0f);
gl.uniform3f(shaderProgram.materialSpecularColorUniform, 0.0f, 0.0f, 0.0f);
gl.uniform1f(shaderProgram.materialShininessUniform, 0);
gl.uniform3f(shaderProgram.materialEmissiveColorUniform, 0.0f, 0.0f, 0.0f);
glMatrix.mat4.identity(mvMatrix);
glMatrix.mat4.translate(mvMatrix, new f[] { 0, 0, -5 });
glMatrix.mat4.rotate(mvMatrix, degToRad(30), new f[] { 1, 0, 0 });
mvPushMatrix();
glMatrix.mat4.rotate(mvMatrix, degToRad(moonAngle), new f[] { 0, 1, 0 });
glMatrix.mat4.translate(mvMatrix, new f[] { 2, 0, 0 });
gl.activeTexture(gl.TEXTURE0);
gl.bindTexture(gl.TEXTURE_2D, moonTexture);
gl.uniform1i(shaderProgram.samplerUniform, 0);
gl.bindBuffer(gl.ARRAY_BUFFER, moonVertexPositionBuffer);
gl.vertexAttribPointer((uint)shaderProgram.vertexPositionAttribute, moonVertexPositionBuffer_itemSize, gl.FLOAT, false, 0, 0);
gl.bindBuffer(gl.ARRAY_BUFFER, moonVertexTextureCoordBuffer);
gl.vertexAttribPointer((uint)shaderProgram.textureCoordAttribute, moonVertexTextureCoordBuffer_itemSize, gl.FLOAT, false, 0, 0);
gl.bindBuffer(gl.ARRAY_BUFFER, moonVertexNormalBuffer);
gl.vertexAttribPointer((uint)shaderProgram.vertexNormalAttribute, moonVertexNormalBuffer_itemSize, gl.FLOAT, false, 0, 0);
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, moonVertexIndexBuffer);
setMatrixUniforms();
gl.drawElements(gl.TRIANGLES, moonVertexIndexBuffer_numItems, gl.UNSIGNED_SHORT, 0);
mvPopMatrix();
mvPushMatrix();
glMatrix.mat4.rotate(mvMatrix, degToRad(cubeAngle), new f[] { 0, 1, 0 });
glMatrix.mat4.translate(mvMatrix, new f[] { 1.25f, 0, 0 });
gl.bindBuffer(gl.ARRAY_BUFFER, cubeVertexPositionBuffer);
gl.vertexAttribPointer((uint)shaderProgram.vertexPositionAttribute, cubeVertexPositionBuffer_itemSize, gl.FLOAT, false, 0, 0);
gl.bindBuffer(gl.ARRAY_BUFFER, cubeVertexNormalBuffer);
gl.vertexAttribPointer((uint)shaderProgram.vertexNormalAttribute, cubeVertexNormalBuffer_itemSize, gl.FLOAT, false, 0, 0);
gl.bindBuffer(gl.ARRAY_BUFFER, cubeVertexTextureCoordBuffer);
gl.vertexAttribPointer((uint)shaderProgram.textureCoordAttribute, cubeVertexTextureCoordBuffer_itemSize, gl.FLOAT, false, 0, 0);
gl.activeTexture(gl.TEXTURE0);
gl.bindTexture(gl.TEXTURE_2D, crateTexture);
gl.uniform1i(shaderProgram.samplerUniform, 0);
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, cubeVertexIndexBuffer);
setMatrixUniforms();
gl.drawElements(gl.TRIANGLES, cubeVertexIndexBuffer_numItems, gl.UNSIGNED_SHORT, 0);
mvPopMatrix();
gl.bindTexture(gl.TEXTURE_2D, rttTexture);
gl.generateMipmap(gl.TEXTURE_2D);
gl.bindTexture(gl.TEXTURE_2D, null);
};
#endregion
#region drawScene
Action drawScene = () =>
示例5: Application
//.........这里部分代码省略.........
100.0f
);
__mat4.identity(mvMatrix);
//glMatrix.mat4.identity(mvMatrix);
__mat4.translate(mvMatrix, mvMatrix, new float[] { -1.5f, 0.0f, -7.0f });
//glMatrix.mat4.translate(mvMatrix, new float[] { -1.5f, 0.0f, -7.0f });
mvPushMatrix();
//glMatrix.mat4.rotate(mvMatrix, degToRad(rWind), new float[] { 0f, 1f, 0f });
__mat4.rotate(mvMatrix, mvMatrix, degToRad(rWind), new float[] { 0, 1f, 0f });
#region DrawFrameworkWingAtX
Action<float, float> DrawFrameworkWingAtX =
(WingX, WingY) =>
{
#region draw center cube
mvPushMatrix();
__mat4.translate(mvMatrix, mvMatrix, new float[] { cubesize * WingX, cubesize * WingY, 0 });
//glMatrix.mat4.translate(mvMatrix, new float[] { cubesize * WingX, cubesize * WingY, 0 });
gl.bindBuffer(gl.ARRAY_BUFFER, cubeVertexPositionBuffer);
gl.vertexAttribPointer((uint)shaderProgram_vertexPositionAttribute, cubeVertexPositionBuffer_itemSize, gl.FLOAT, false, 0, 0);
gl.bindBuffer(gl.ARRAY_BUFFER, squareVertexColorBuffer);
gl.vertexAttribPointer((uint)shaderProgram_vertexColorAttribute, cubeVertexColorBuffer_itemSize, gl.FLOAT, false, 0, 0);
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, cubeVertexIndexBuffer);
setMatrixUniforms();
//gl.drawElements(gl.TRIANGLES, cubeVertexPositionBuffer_numItems, gl.UNSIGNED_SHORT, 0);
gl.drawElements(gl.TRIANGLES, cubeVertexPositionBuffer_numItems, gl.UNSIGNED_BYTE, 0);
mvPopMatrix();
#endregion
};
#endregion
#region DrawWingAtX
Action<int, int, float, float> DrawWingAtX =
(WingX, WingSize, WingRotationMultiplier, WingRotationOffset) =>
{
mvPushMatrix();
__mat4.translate(mvMatrix, mvMatrix, new float[] { cubesize * WingX, 0, 0 });
//glMatrix.mat4.translate(mvMatrix, new float[] { cubesize * WingX, 0, 0 });
if (WingRotationOffset == 0)
{
DrawFrameworkWingAtX(0, 0);
}
#region DrawWingPart
Action<float> DrawWingPart =
PartIndex =>
{
mvPushMatrix();
//glMatrix.mat4.rotate(mvMatrix, degToRad(WingRotationOffset + (rCube * WingRotationMultiplier)), new float[] { 1f, 0f, 0f });
__mat4.rotate(mvMatrix, mvMatrix, degToRad(WingRotationOffset + (rCube * WingRotationMultiplier)), new float[] { 1f, 0f, 0f });
//glMatrix.mat4.translate(mvMatrix, new float[] { 0f, cubesize * PartIndex * 2, 0 });
__mat4.translate(mvMatrix, mvMatrix, new float[] { 0f, cubesize * PartIndex * 2, 0 });
gl.bindBuffer(gl.ARRAY_BUFFER, cubeVertexPositionBuffer);
gl.vertexAttribPointer((uint)shaderProgram_vertexPositionAttribute, cubeVertexPositionBuffer_itemSize, gl.FLOAT, false, 0, 0);
示例6: Application
//.........这里部分代码省略.........
var yRot = 1f;
var transl = -15.5f;
#region drawScene
Action drawScene = delegate
{
var rotMat = new CanvasMatrix4();
rotMat.makeIdentity();
#region draw
Action<f, f, f, f, f, f, f> drawBall = (x, y, z, r, g, b, _scale) =>
{
var scale = _scale * 1.4f;
mvMatrix.makeIdentity();
mvMatrix.translate(x, y, z);
mvMatrix.multRight(rotMat);
mvMatrix.translate(0, 0, transl);
gl.uniformMatrix4fv(mvMatLoc, false, new Float32Array(mvMatrix.getAsArray()));
//var colorLoc = gl.getUniformLocation(prog, "color");
//var scaleLoc = gl.getUniformLocation(prog, "scale");
uniforms.color = new __vec3(r, g, b);
uniforms.scale = scale;
//gl.uniform1f(scaleLoc, scale);
//gl.uniform3f(colorLoc, r, g, b);
for (var i = 0; i < nTheta; i++)
gl.drawElements(gl.TRIANGLE_STRIP, 2 * (nPhi + 1), gl.UNSIGNED_SHORT,
4 * (nPhi + 1) * i);
};
Action<f, f, f, f> drawBall_white = (x, y, z, _scale) =>
drawBall(x, y, z, 1, 1, 1, _scale);
Action<f, f, f, f> drawBall_red = (x, y, z, _scale) =>
drawBall(x, y, z, 1, 0, 0, _scale);
Action<f, f, f, f> drawBall_blue = (x, y, z, _scale) =>
drawBall(x, y, z, 0, 0, 1, _scale);
Action<f, f, f, f> drawBall_gray = (x, y, z, _scale) =>
drawBall(x, y, z, .3f, .3f, .3f, _scale);
#endregion
gl.viewport(0, 0, gl_viewportWidth, gl_viewportHeight);
#region prMatrix
gl.uniformMatrix4fv(gl.getUniformLocation(prog, "prMatrix"),
false, new Float32Array(prMatrix.getAsArray()));
#endregion
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
rotMat.rotate(xRot / 3, 1, 0, 0);
rotMat.rotate(yRot / 3, 0, 1, 0);
//yRot = 0;
//xRot = 0;
示例7: Application
//.........这里部分代码省略.........
false, new Float32Array(prMatrix.getAsArray()));
var mvMatrix = new CanvasMatrix4();
var rotMat = new CanvasMatrix4();
rotMat.makeIdentity();
var mvMatLoc = gl.getUniformLocation(prog, "mvMatrix");
var colorLoc = gl.getUniformLocation(prog, "color");
var scaleLoc = gl.getUniformLocation(prog, "scale");
gl.enable(gl.DEPTH_TEST);
gl.depthFunc(gl.LEQUAL);
gl.clearDepth(1.0f);
gl.clearColor(0, 0, .8f, 1f);
var xOffs = 0;
var yOffs = 0;
var drag = 0;
var xRot = 0f;
var yRot = 0f;
var transl = -10.5f;
#region drawBall
Action<f, f, f, f, f, f, f> drawBall = (x, y, z, r, g, b, _scale) =>
{
var scale = _scale * 1f;
mvMatrix.makeIdentity();
mvMatrix.translate(x, y, z);
mvMatrix.multRight(rotMat);
mvMatrix.translate(0, 0, transl);
gl.uniformMatrix4fv(mvMatLoc, false, new Float32Array(mvMatrix.getAsArray()));
gl.uniform1f(scaleLoc, scale);
gl.uniform3f(colorLoc, r, g, b);
for (var i = 0; i < nTheta; i++)
gl.drawElements(gl.TRIANGLE_STRIP, 2 * (nPhi + 1), gl.UNSIGNED_SHORT,
4 * (nPhi + 1) * i);
};
#endregion
Action<f, f, f, f> drawBall_white = (x, y, z, _scale) =>
drawBall(x, y, z, 1, 1, 1, _scale);
Action<f, f, f, f> drawBall_red = (x, y, z, _scale) =>
drawBall(x, y, z, 1, 0, 0, _scale);
#region drawScene
Action drawScene = delegate
{
gl.viewport(0, 0, gl_viewportWidth, gl_viewportHeight);
#region prMatrix
gl.uniformMatrix4fv(gl.getUniformLocation(prog, "prMatrix"),
false, new Float32Array(prMatrix.getAsArray()));
#endregion
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
rotMat.rotate(xRot / 3, 1, 0, 0); rotMat.rotate(yRot / 3, 0, 1, 0);
yRot = 0; xRot = 0;
drawBall(0, 0, 0, .3f, .3f, .3f, 1.5f);
drawBall(1, 1, 1, .3f, .3f, .3f, 1.5f);
drawBall_white(2, 2, 0, 1);
drawBall_white(2, 0, 2, 1);
drawBall_white(0, 2, 2, 1);
drawBall_white(-1, -1, 1, 1);
示例8: Application
//.........这里部分代码省略.........
);
#endregion
#region [uniform] vec3 uPointLightingLocation <- (f lightPositionX, f lightPositionY, f lightPositionZ)
gl.uniform3f(
shaderProgram_pointLightingLocationUniform,
parseFloat(toolbar.lightPositionX.value),
parseFloat(toolbar.lightPositionY.value),
parseFloat(toolbar.lightPositionZ.value)
);
#endregion
#region [uniform] vec3 uPointLightingColor <- (f pointR, f pointG, f pointB)
gl.uniform3f(
shaderProgram_pointLightingColorUniform,
parseFloat(toolbar.pointR.value),
parseFloat(toolbar.pointG.value),
parseFloat(toolbar.pointB.value)
);
#endregion
}
glMatrix.mat4.identity(mvMatrix);
glMatrix.mat4.translate(mvMatrix, new f[] { 0, 0, -20 });
#region moon
mvPushMatrix();
glMatrix.mat4.rotate(mvMatrix, degToRad(moonAngle), new f[] { 0, 1, 0 });
glMatrix.mat4.translate(mvMatrix, new f[] { 5, 0, 0 });
gl.activeTexture(gl.TEXTURE0);
gl.bindTexture(gl.TEXTURE_2D, moonTexture);
gl.uniform1i(shaderProgram_samplerUniform, 0);
gl.bindBuffer(gl.ARRAY_BUFFER, moonVertexPositionBuffer);
gl.vertexAttribPointer((uint)shaderProgram_vertexPositionAttribute, moonVertexPositionBuffer_itemSize, gl.FLOAT, false, 0, 0);
gl.bindBuffer(gl.ARRAY_BUFFER, moonVertexTextureCoordBuffer);
gl.vertexAttribPointer((uint)shaderProgram_textureCoordAttribute, moonVertexTextureCoordBuffer_itemSize, gl.FLOAT, false, 0, 0);
gl.bindBuffer(gl.ARRAY_BUFFER, moonVertexNormalBuffer);
gl.vertexAttribPointer((uint)shaderProgram_vertexNormalAttribute, moonVertexNormalBuffer_itemSize, gl.FLOAT, false, 0, 0);
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, moonVertexIndexBuffer);
setMatrixUniforms();
gl.drawElements(gl.TRIANGLES, moonVertexIndexBuffer_numItems, gl.UNSIGNED_SHORT, 0);
mvPopMatrix();
#endregion
#region cube
mvPushMatrix();
glMatrix.mat4.rotate(mvMatrix, degToRad(cubeAngle), new f[] { 0, 1, 0 });
glMatrix.mat4.translate(mvMatrix, new f[] { 5, 0, 0 });
gl.bindBuffer(gl.ARRAY_BUFFER, cubeVertexPositionBuffer);
gl.vertexAttribPointer((uint)shaderProgram_vertexPositionAttribute, cubeVertexPositionBuffer_itemSize, gl.FLOAT, false, 0, 0);
gl.bindBuffer(gl.ARRAY_BUFFER, cubeVertexNormalBuffer);
gl.vertexAttribPointer((uint)shaderProgram_vertexNormalAttribute, cubeVertexNormalBuffer_itemSize, gl.FLOAT, false, 0, 0);
gl.bindBuffer(gl.ARRAY_BUFFER, cubeVertexTextureCoordBuffer);
gl.vertexAttribPointer((uint)shaderProgram_textureCoordAttribute, cubeVertexTextureCoordBuffer_itemSize, gl.FLOAT, false, 0, 0);
gl.activeTexture(gl.TEXTURE0);
gl.bindTexture(gl.TEXTURE_2D, crateTexture);
gl.uniform1i(shaderProgram_samplerUniform, 0);
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, cubeVertexIndexBuffer);
setMatrixUniforms();
gl.drawElements(gl.TRIANGLES, cubeVertexIndexBuffer_numItems, gl.UNSIGNED_SHORT, 0);
mvPopMatrix();
#endregion
};
#endregion
Native.window.onframe += delegate
{
if (IsDisposed)
return;
animate();
drawScene();
};
}
)
);
}
示例9: Application
//.........这里部分代码省略.........
#region vertex
gl.bindBuffer(gl.ARRAY_BUFFER, cubeVertexPositionBuffer);
gl.vertexAttribPointer((uint)shaderProgram_vertexPositionAttribute, cubeVertexPositionBuffer_itemSize, gl.FLOAT, false, 0, 0);
#endregion
#region color
gl.bindBuffer(gl.ARRAY_BUFFER, cubeVertexColorBuffer);
gl.vertexAttribPointer((uint)shaderProgram_vertexColorAttribute, cubeVertexColorBuffer_itemSize, gl.FLOAT, false, 0, 0);
#endregion
glMatrix.mat4.translate(mvMatrix, new float[] { -1.5f, 0.0f, -7.0f });
mvPushMatrix();
// rotate all of it
glMatrix.mat4.rotate(mvMatrix, degToRad(rCube * 0.05f), new float[] { -1f, 0.5f, 0f });
glMatrix.mat4.rotate(mvMatrix, __pointer_y * 0.01f, new float[] { 1f, 0, 0f });
glMatrix.mat4.rotate(mvMatrix, __pointer_x * 0.01f, new float[] { 0, 1f, 0f });
#region DrawCubeAt
Action<float, float> DrawCubeAt =
(x, y) =>
{
mvPushMatrix();
glMatrix.mat4.translate(mvMatrix, new float[] { 2 * cubesize * x, 2 * cubesize * -y, 0 });
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, cubeVertexIndexBuffer);
setMatrixUniforms();
gl.drawElements(gl.TRIANGLES, cubeVertexPositionBuffer_numItems, gl.UNSIGNED_SHORT, 0);
mvPopMatrix();
};
#endregion
for (int ix = 0; ix < 11; ix++)
{
for (int iy = 0; iy < 11; iy++)
{
DrawCubeAt(ix, iy);
}
}
#region DrawFinger
Action<int, float> DrawFinger =
(x, fdeg) =>
{
mvPushMatrix();
glMatrix.mat4.rotate(mvMatrix, degToRad(fdeg), new float[] { 1f, 0f, 0f });
// 01.34.67.89.01
DrawCubeAt(3 * x + 0, -2);
DrawCubeAt(3 * x + 1, -2);
DrawCubeAt(3 * x + 0, -3);
DrawCubeAt(3 * x + 1, -3);
mvPushMatrix();
glMatrix.mat4.translate(mvMatrix, new float[] { 0, 2 * cubesize * (5), 0 });
glMatrix.mat4.rotate(mvMatrix, degToRad(fdeg), new float[] { 1f, 0f, 0f });
示例10: Application
//.........这里部分代码省略.........
#region [uniform] uAmbientColor <- ambientR, ambientG, ambientB
gl.uniform3f(
shaderProgram.ambientColorUniform,
parseFloat(toolbar.ambientR.value),
parseFloat(toolbar.ambientG.value),
parseFloat(toolbar.ambientB.value)
);
#endregion
#region [uniform] uPointLightingLocation <- lightPositionX, lightPositionY, lightPositionZ
gl.uniform3f(
shaderProgram.pointLightingLocationUniform,
parseFloat(toolbar.lightPositionX.value),
parseFloat(toolbar.lightPositionY.value),
parseFloat(toolbar.lightPositionZ.value)
);
#endregion
#region [uniform] uPointLightingSpecularColor <- specularR, specularG, specularB
gl.uniform3f(
shaderProgram.pointLightingSpecularColorUniform,
parseFloat(toolbar.specularR.value),
parseFloat(toolbar.specularG.value),
parseFloat(toolbar.specularB.value)
);
#endregion
#region [uniform] uPointLightingDiffuseColor <- diffuseR, diffuseG, diffuseB
gl.uniform3f(
shaderProgram.pointLightingDiffuseColorUniform,
parseFloat(toolbar.diffuseR.value),
parseFloat(toolbar.diffuseG.value),
parseFloat(toolbar.diffuseB.value)
);
#endregion
}
var texture = toolbar.texture[toolbar.texture.selectedIndex].value;
gl.uniform1i(shaderProgram.useTexturesUniform, Convert.ToInt32(texture != "none"));
glMatrix.mat4.identity(mvMatrix);
glMatrix.mat4.translate(mvMatrix, new f[] { 0, 0, -40 });
glMatrix.mat4.rotate(mvMatrix, degToRad(23.4f), new f[] { 1, 0, -1 });
glMatrix.mat4.rotate(mvMatrix, degToRad(teapotAngle), new f[] { 0, 1, 0 });
gl.activeTexture(gl.TEXTURE0);
if (texture == "earth")
{
gl.bindTexture(gl.TEXTURE_2D, earthTexture);
}
else if (texture == "galvanized")
{
gl.bindTexture(gl.TEXTURE_2D, galvanizedTexture);
}
gl.uniform1i(shaderProgram.samplerUniform, 0);
gl.uniform1f(shaderProgram.materialShininessUniform, parseFloat(toolbar.shininess.value));
gl.bindBuffer(gl.ARRAY_BUFFER, teapotVertexPositionBuffer);
gl.vertexAttribPointer((uint)shaderProgram.vertexPositionAttribute, teapotVertexPositionBuffer_itemSize, gl.FLOAT, false, 0, 0);
gl.bindBuffer(gl.ARRAY_BUFFER, teapotVertexTextureCoordBuffer);
gl.vertexAttribPointer((uint)shaderProgram.textureCoordAttribute, teapotVertexTextureCoordBuffer_itemSize, gl.FLOAT, false, 0, 0);
gl.bindBuffer(gl.ARRAY_BUFFER, teapotVertexNormalBuffer);
gl.vertexAttribPointer((uint)shaderProgram.vertexNormalAttribute, teapotVertexNormalBuffer_itemSize, gl.FLOAT, false, 0, 0);
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, teapotVertexIndexBuffer);
setMatrixUniforms();
gl.drawElements(gl.TRIANGLES, teapotVertexIndexBuffer_numItems, gl.UNSIGNED_SHORT, 0);
};
#endregion
Native.window.onframe += delegate
{
if (IsDisposed)
return;
animate();
drawScene();
};
};
}
)
);
}
示例11: ApplicationContent
//.........这里部分代码省略.........
};
Action cyan =
delegate
{
gl.bindBuffer(gl.ARRAY_BUFFER, cubeVertexColorBuffer_cyan);
gl.vertexAttribPointer((uint)shaderProgram_vertexColorAttribute, cubeVertexColorBuffer_itemSize, gl.FLOAT, false, 0, 0);
};
#endregion
mw(
delegate
{
glMatrix.mat4.translate(mvMatrix, new[] { 0f, 0.0f, -4f });
glMatrix.mat4.rotate(mvMatrix, degToRad(-70), new[] { 1f, 0f, 0f });
glMatrix.mat4.rotate(mvMatrix, degToRad((f)(Math.Sin(a * 0.0003f) * 33)), new[] { 0f, 0f, 1f });
glMatrix.mat4.translate(mvMatrix, new[] { 0f, camera_z, 0f });
gl.bindBuffer(gl.ARRAY_BUFFER, cubeVertexPositionBuffer);
gl.vertexAttribPointer((uint)shaderProgram_vertexPositionAttribute, cubeVertexPositionBuffer_itemSize, gl.FLOAT, false, 0, 0);
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, cubeVertexIndexBuffer);
// gl.TRIANGLES;
var drawElements_mode = gl.TRIANGLES;
#region draw
Action<f, f, f> draw =
(x, y, z) =>
{
mw(
delegate
{
glMatrix.mat4.translate(mvMatrix, new[] { x * size * 2, y * size * 2, z * size * 2 });
setMatrixUniforms();
gl.drawElements(drawElements_mode, cubeVertexIndexBuffer_numItems, gl.UNSIGNED_SHORT, 0);
//gl.drawElements(gl.TRIANGLES, cubeVertexIndexBuffer_numItems, gl.UNSIGNED_SHORT, 0);
}
);
};
#endregion
#region at
Action<f, f, f, Action> at = (x, y, z, h) =>
{
mw(
delegate
{
glMatrix.mat4.translate(mvMatrix, new[] { x * size * 2, y * size * 2, z * size * 2 });
h();
}
);
};
#endregion
示例12: Application
//.........这里部分代码省略.........
1,2,1, 1,-2,1, 1,2,-1, 1,-2,-1, -1,2,1, -1,-2,1, -1,2,-1, -1,-2,-1,
1,1,2, 1,1,-2, -1,1,2, -1,1,-2, 1,-1,2, 1,-1,-2, -1,-1,2, -1,-1,-2
};
gl.enableVertexAttribArray(lineLoc);
gl.bindBuffer(gl.ARRAY_BUFFER, gl.createBuffer());
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(pt1), gl.STATIC_DRAW);
gl.vertexAttribPointer(lineLoc, 3, gl.FLOAT, false, 0, 0);
gl.enable(gl.DEPTH_TEST);
gl.depthFunc(gl.LEQUAL);
gl.clearDepth(1.0f);
gl.clearColor(.5f, 1f, .5f, 1f);
gl.lineWidth(2);
var xOffs = 0;
var yOffs = 0;
var drag = 0;
var xRot = 0f;
var yRot = 0f;
var transl = -6.0f;
#region drawBall
Action<f, f, f> drawBall = (x, y, z) =>
{
mvMatrix.makeIdentity();
mvMatrix.translate(x, y, z);
mvMatrix.multRight(rotMat);
mvMatrix.translate(0, 0, transl);
gl.uniformMatrix4fv(mvMatLoc, false,
new Float32Array(mvMatrix.getAsArray()));
gl.drawElements(gl.TRIANGLES, 6 * nPhi * nTheta, gl.UNSIGNED_SHORT, 72);
};
#endregion
#region drawScene
Action drawScene = delegate
{
gl.viewport(0, 0, gl_viewportWidth, gl_viewportWidth);
gl.useProgram(prog);
gl.uniformMatrix4fv(gl.getUniformLocation(prog, "prMatrix"),
false, new Float32Array(prMatrix.getAsArray()));
rotMat.rotate(xRot / 5, 1, 0, 0);
rotMat.rotate(yRot / 5, 0, 1, 0);
yRot = 0;
xRot = 0;
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
gl.uniform4f(colorLoc, 1, 1, 0, 1);
drawBall(1, 1, 1); drawBall(-1, 1, 1); drawBall(1, -1, 1);
drawBall(1, 1, -1); drawBall(-1, -1, 1); drawBall(-1, 1, -1);
drawBall(1, -1, -1); drawBall(-1, -1, -1);
mvMatrix.load(rotMat);
mvMatrix.translate(0, 0, transl);
示例13: Application
//.........这里部分代码省略.........
}
lastTime = timeNow;
};
Func<float, float> degToRad = (degrees) =>
{
return degrees * (f)Math.PI / 180f;
};
#endregion
#region drawScene
Action drawScene = delegate
{
gl.viewport(0, 0, gl_viewportWidth, gl_viewportHeight);
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
glMatrix.mat4.perspective(45f, (float)gl_viewportWidth / (float)gl_viewportHeight, 0.1f, 100.0f, pMatrix);
glMatrix.mat4.identity(mvMatrix);
glMatrix.mat4.translate(mvMatrix, new float[] { -1.5f, 0.0f, -7.0f });
#region new in lesson 03
mvPushMatrix();
// we�re changing our current rotation state as stored in the model-view matrix
// MVC? :)
glMatrix.mat4.rotate(mvMatrix, degToRad(rPyramid), new float[] { 0f, 1f, 0f });
#endregion
gl.bindBuffer(gl.ARRAY_BUFFER, pyramidVertexPositionBuffer);
gl.vertexAttribPointer((uint)shaderProgram_vertexPositionAttribute, pyramidVertexPositionBuffer_itemSize, gl.FLOAT, false, 0, 0);
gl.bindBuffer(gl.ARRAY_BUFFER, pyramidVertexColorBuffer);
gl.vertexAttribPointer((uint)shaderProgram_vertexColorAttribute, pyramidVertexColorBuffer_itemSize, gl.FLOAT, false, 0, 0);
setMatrixUniforms();
gl.drawArrays(gl.TRIANGLES, 0, pyramidVertexPositionBuffer_numItems);
#region new in lesson 03
mvPopMatrix();
#endregion
glMatrix.mat4.translate(mvMatrix, new float[] { 3.0f, 0.0f, 0.0f });
#region new in lesson 04
mvPushMatrix();
glMatrix.mat4.rotate(mvMatrix, degToRad(rCube), new float[] { 1f, 1f, 1f });
#endregion
gl.bindBuffer(gl.ARRAY_BUFFER, cubeVertexPositionBuffer);
gl.vertexAttribPointer((uint)shaderProgram_vertexPositionAttribute, cubeVertexPositionBuffer_itemSize, gl.FLOAT, false, 0, 0);
gl.bindBuffer(gl.ARRAY_BUFFER, cubeVertexColorBuffer);
gl.vertexAttribPointer((uint)shaderProgram_vertexColorAttribute, cubeVertexColorBuffer_itemSize, gl.FLOAT, false, 0, 0);
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, cubeVertexIndexBuffer);
setMatrixUniforms();
gl.drawElements(gl.TRIANGLES, cubeVertexIndexBuffer_numItems, gl.UNSIGNED_SHORT, 0);
#region new in lesson 03
mvPopMatrix();
#endregion
};
drawScene();
#endregion
var c = 0;
Native.window.onframe += delegate
{
c++;
Native.document.title = "" + c;
drawScene();
animate();
};
//new IHTMLAnchor { "drag me to my.jsc-solutions.net" }.AttachToDocument().With(
// dragme =>
// {
// dragme.style.position = [email protected];
// dragme.style.left = "1em";
// dragme.style.bottom = "1em";
// dragme.style.color = "yellow";
// dragme.AllowToDragAsApplicationPackage();
// }
//);
}
示例14: Application
//.........这里部分代码省略.........
var lighting = [email protected];
gl.uniform1i(shaderProgram.useLightingUniform, Convert.ToInt32(lighting));
#endregion
if (lighting)
{
#region [uniform] uAmbientColor <- ambientR, ambientG, ambientB
gl.uniform3f(
shaderProgram.ambientColorUniform,
float.Parse(toolbar.ambientR.value),
float.Parse(toolbar.ambientG.value),
float.Parse(toolbar.ambientB.value)
);
#endregion
#region [uniform] uPointLightingLocation <- lightPositionX, lightPositionY, lightPositionZ
gl.uniform3f(
shaderProgram.pointLightingLocationUniform,
float.Parse(toolbar.lightPositionX.value),
float.Parse(toolbar.lightPositionY.value),
float.Parse(toolbar.lightPositionZ.value)
);
#endregion
#region [uniform] uPointLightingSpecularColor <- specularR, specularG, specularB
gl.uniform3f(
shaderProgram.pointLightingSpecularColorUniform,
float.Parse(toolbar.specularR.value),
float.Parse(toolbar.specularG.value),
float.Parse(toolbar.specularB.value)
);
#endregion
#region [uniform] uPointLightingDiffuseColor <- diffuseR, diffuseG, diffuseB
gl.uniform3f(
shaderProgram.pointLightingDiffuseColorUniform,
float.Parse(toolbar.diffuseR.value),
float.Parse(toolbar.diffuseG.value),
float.Parse(toolbar.diffuseB.value)
);
#endregion
}
glMatrix.mat4.identity(mvMatrix);
glMatrix.mat4.translate(mvMatrix, new f[] { 0, 0, -40 });
glMatrix.mat4.rotate(mvMatrix, degToRad(23.4f), new f[] { 1, 0, -1 });
glMatrix.mat4.rotate(mvMatrix, degToRad(earthAngle), new f[] { 0, 1, 0 });
gl.activeTexture(gl.TEXTURE0);
gl.bindTexture(gl.TEXTURE_2D, earthColorMapTexture);
gl.uniform1i(shaderProgram.colorMapSamplerUniform, 0);
gl.activeTexture(gl.TEXTURE1);
gl.bindTexture(gl.TEXTURE_2D, earthSpecularMapTexture);
gl.uniform1i(shaderProgram.specularMapSamplerUniform, 1);
gl.bindBuffer(gl.ARRAY_BUFFER, sphereVertexPositionBuffer);
gl.vertexAttribPointer((uint)shaderProgram.vertexPositionAttribute, sphereVertexPositionBuffer_itemSize, gl.FLOAT, false, 0, 0);
gl.bindBuffer(gl.ARRAY_BUFFER, sphereVertexTextureCoordBuffer);
gl.vertexAttribPointer((uint)shaderProgram.textureCoordAttribute, sphereVertexTextureCoordBuffer_itemSize, gl.FLOAT, false, 0, 0);
gl.bindBuffer(gl.ARRAY_BUFFER, sphereVertexNormalBuffer);
gl.vertexAttribPointer((uint)shaderProgram.vertexNormalAttribute, sphereVertexNormalBuffer_itemSize, gl.FLOAT, false, 0, 0);
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, sphereVertexIndexBuffer);
setMatrixUniforms();
gl.drawElements(gl.TRIANGLES, sphereVertexIndexBuffer_numItems, gl.UNSIGNED_SHORT, 0);
};
#endregion
Native.window.onframe += delegate
{
if (IsDisposed)
return;
animate();
drawScene();
};
}
)
);
}
示例15: Application
//.........这里部分代码省略.........
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, (int)gl.NEAREST);
#endregion
gl.bindTexture(gl.TEXTURE_2D, null);
gl.clearColor(0.0f, 0.0f, 0.0f, 1.0f);
gl.enable(gl.DEPTH_TEST);
#region new in lesson 04
var xRot = 0.0f;
var yRot = 0.0f;
var zRot = 0.0f;
var lastTime = 0L;
Action animate = delegate
{
var timeNow = new IDate().getTime();
if (lastTime != 0)
{
var elapsed = timeNow - lastTime;
xRot += (90 * elapsed) / 1000.0f;
yRot += (90 * elapsed) / 1000.0f;
zRot += (90 * elapsed) / 1000.0f;
}
lastTime = timeNow;
};
Func<float, float> degToRad = (degrees) =>
{
return degrees * (f)Math.PI / 180f;
};
#endregion
#region drawScene
Action drawScene = delegate
{
gl.viewport(0, 0, gl_viewportWidth, gl_viewportHeight);
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
glMatrix.mat4.perspective(45f, (float)gl_viewportWidth / (float)gl_viewportHeight, 0.1f, 100.0f, pMatrix);
glMatrix.mat4.identity(mvMatrix);
glMatrix.mat4.translate(mvMatrix, new float[] { 0.0f, 0.0f, -5.0f });
glMatrix.mat4.rotate(mvMatrix, degToRad(xRot), new[] { 1f, 0f, 0f });
glMatrix.mat4.rotate(mvMatrix, degToRad(yRot), new[] { 0f, 1f, 0f });
glMatrix.mat4.rotate(mvMatrix, degToRad(zRot), new[] { 0f, 0f, 1f });
gl.bindBuffer(gl.ARRAY_BUFFER, cubeVertexPositionBuffer);
gl.vertexAttribPointer((uint)shaderProgram_vertexPositionAttribute, cubeVertexPositionBuffer_itemSize, gl.FLOAT, false, 0, 0);
gl.bindBuffer(gl.ARRAY_BUFFER, cubeVertexTextureCoordBuffer);
gl.vertexAttribPointer((uint)shaderProgram_textureCoordAttribute, cubeVertexTextureCoordBuffer_itemSize, gl.FLOAT, false, 0, 0);
gl.activeTexture(gl.TEXTURE0);
gl.bindTexture(gl.TEXTURE_2D, neheTexture);
gl.uniform1i(shaderProgram_samplerUniform, 0);
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, cubeVertexIndexBuffer);
setMatrixUniforms();
gl.drawElements(gl.TRIANGLES, cubeVertexIndexBuffer_numItems, gl.UNSIGNED_SHORT, 0);
};
drawScene();
#endregion
var c = 0;
Native.window.onframe += delegate
{
c++;
Native.document.title = "" + c;
drawScene();
animate();
};
}
);
}