Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我试图在WebGL中绘制旋转正方形,但没有得到它。另外,我需要添加一个点光源_Javascript_Webgl - Fatal编程技术网

Javascript 我试图在WebGL中绘制旋转正方形,但没有得到它。另外,我需要添加一个点光源

Javascript 我试图在WebGL中绘制旋转正方形,但没有得到它。另外,我需要添加一个点光源,javascript,webgl,Javascript,Webgl,不过,需要在下面添加 需要为场景中显示的对象设置曲面法线 为场景中显示的对象正确设置不同的材质属性 在固定位置正确显示两个不同的光源,用于正确演示场景中的对象,并且可以独立打开和关闭 使用环境光源组件正确设置上面的灯光,环境光源组件用于正确演示场景中的对象,并且可以使用刻度盘或滑块从完全黑暗变为高亮度(从0-总黑暗度到100-总亮度,默认值介于两者之间。我吃了一个加奶酪的大意大利香肠,谢谢!这个话题可以说太大了。有人可能会来举个例子,但WebGL中的灯光通常需要知道一大堆之前你的问题表明你还不知

不过,需要在下面添加

需要为场景中显示的对象设置曲面法线

为场景中显示的对象正确设置不同的材质属性

在固定位置正确显示两个不同的光源,用于正确演示场景中的对象,并且可以独立打开和关闭


使用环境光源组件正确设置上面的灯光,环境光源组件用于正确演示场景中的对象,并且可以使用刻度盘或滑块从完全黑暗变为高亮度(从0-总黑暗度到100-总亮度,默认值介于两者之间。

我吃了一个加奶酪的大意大利香肠,谢谢!这个话题可以说太大了。有人可能会来举个例子,但WebGL中的灯光通常需要知道一大堆之前你的问题表明你还不知道的东西。)我建议你读一些关于这篇文章的文章,以及这篇文章的9条先决条件。
"use strict";

var canvas;
var gl;

var axis = 0;

var xAxis = 0;
var yAxis =1;
var zAxis = 2;

var theta = [0, 0, 0];


var thetaLoc;

var flag = true;

var numElements = 36;

var vertices = [
    vec3(-0.5, -0.5,  0.5),
    vec3(-0.5,  0.5,  0.5),
    vec3(0.5,  0.5,  0.5),
    vec3(0.5, -0.5,  0.5),
    vec3(-0.5, -0.5, -0.5),
    vec3(-0.5,  0.5, -0.5),
    vec3(0.5,  0.5, -0.5),
    vec3(0.5, -0.5, -0.5)
];

var vertexColors = [
    vec4(0.0, 0.0, 0.0, 1.0),  // black
    vec4(1.0, 0.0, 0.0, 1.0),  // red
    vec4(1.0, 1.0, 0.0, 1.0),  // yellow
    vec4(0.0, 1.0, 0.0, 1.0),  // green
    vec4(0.0, 0.0, 1.0, 1.0),  // blue
    vec4(1.0, 0.0, 1.0, 1.0),  // magenta
    vec4(1.0, 1.0, 1.0, 1.0),  // white
    vec4(0.0, 1.0, 1.0, 1.0)   // cyan
];

// indices of the 12 triangles that compose the cube
var indices = [
    1, 0, 3,
    3, 2, 1,
    2, 3, 7,
    7, 6, 2,
    3, 0, 4,
    4, 7, 3,
    6, 5, 1,
    1, 2, 6,
    4, 5, 6,
    6, 7, 4,
    5, 4, 0,
    0, 1, 5
];



window.onload = function init()
{
    // --------------- Cube --------------------------
    canvas = document.getElementById("gl-canvas");
    gl = canvas.getContext('webgl2');
    if (!gl) alert("WebGL 2.0 isn't available");


    gl.viewport(0, 0, canvas.width - 50, canvas.height - 50);
    gl.clearColor(1.0, 1.0, 1.0, 1.0);

    gl.enable(gl.DEPTH_TEST);

    //  Load shaders and initialize attribute buffers
    // Create a buffer object, initialise it, and associate it 
    // with the associated attribute variable in our vertex shader

    var programCube = initShaders(gl, "vertex-shader", "fragment-shader");
    gl.useProgram(programCube);

    // array element buffer
    var iBuffer = gl.createBuffer();
    gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, iBuffer);
    gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, new Uint8Array(indices), gl.STATIC_DRAW);

    // color array atrribute buffer
    var cBuffer = gl.createBuffer();
    gl.bindBuffer(gl.ARRAY_BUFFER, cBuffer);
    gl.bufferData(gl.ARRAY_BUFFER, flatten(vertexColors), gl.STATIC_DRAW);

    var colorLoc = gl.getAttribLocation(programCube, "aColor");
    gl.vertexAttribPointer(colorLoc, 4, gl.FLOAT, false, 0, 0);
    gl.enableVertexAttribArray(colorLoc);

    // vertex array attribute buffer
    var vBuffer = gl.createBuffer();
    gl.bindBuffer(gl.ARRAY_BUFFER, vBuffer);
    gl.bufferData(gl.ARRAY_BUFFER, flatten(vertices), gl.STATIC_DRAW);

    var positionLoc = gl.getAttribLocation( programCube, "aPosition");
    gl.vertexAttribPointer(positionLoc, 3, gl.FLOAT, false, 0, 0);
    gl.enableVertexAttribArray(positionLoc );

    thetaLoc = gl.getUniformLocation(programCube, "uTheta");
    render();



    //event listeners for buttons
    document.getElementById( "xButton" ).onclick = function () {
        axis = xAxis;
    };
    document.getElementById( "yButton" ).onclick = function () {
        axis = yAxis;
    };
    document.getElementById( "zButton" ).onclick = function () {
        axis = zAxis;
    };
    document.getElementById("ButtonT").onclick = function(){flag = !flag;};



}

function render()
{
    gl.clear( gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);

    if(flag) theta[axis] += 2.0;
    gl.uniform3fv(thetaLoc, theta);

    gl.drawElements(gl.TRIANGLES, numElements, gl.UNSIGNED_BYTE, 0);
    requestAnimationFrame(render);
}