错误:如何在WebGL中使用三角形风扇绘制圆?

苛刻的乔希

我无法使用三角形风扇绘制圆。

以下代码是我的JavaScript文件的代码。我的html包含画布和着色器。我还有另一个JavaScript,用于初始化顶点着色器和片段着色器。从其他javascript文件初始化着色器完全没有问题,因为它可以与其他代码一起正常工作。

请帮助我使用此代码,查找出问题所在。

var xCenterOfCircle;
var yCenterOfCircle;
var centerOfCircle;
var radiusOfCircle = 200;
var ATTRIBUTES = 2;
var noOfFans = 80;
var anglePerFan;
var verticesData = [];
var canvas;
var gl;

window.onload = function init()
{
    canvas = document.getElementById( "gl-canvas" );

    gl = WebGLUtils.setupWebGL( canvas );
    if ( !gl ) { alert( "WebGL isn't available" ); }

    //
    //  Configure WebGL
    //
    gl.viewport( 0.0, 0.0, canvas.width, canvas.height );
    gl.clearColor( 1.0, 1.0, 1.0, 1.0 );

    //  Load shaders and initialize attribute buffers

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


    drawCircle();

    // Load the data into the GPU

    var bufferId = gl.createBuffer();
    gl.bindBuffer( gl.ARRAY_BUFFER, bufferId );
    gl.bufferData( gl.ARRAY_BUFFER, flatten(verticesData), gl.STATIC_DRAW );

    // Associate out shader variables with our data buffer

    var vPosition = gl.getAttribLocation( program, "vPosition" );
    gl.vertexAttribPointer( vPosition, 2, gl.FLOAT, false, 0, 0 );
    gl.enableVertexAttribArray( vPosition );

    render();
}


function drawCircle()
{
    xCenterOfCircle = 400;
    yCenterOfCircle = 400;
    centerOfCircle = vec2(400, 400);
    anglePerFan = (2*Math.PI) / noOfFans;
    verticesData = [centerOfCircle];

    for(var i = 0; i <= noOfFans; i++)
    {
        var index = ATTRIBUTES * i + 2;
        var angle = anglePerFan * (i+1);
        var xCoordinate = xCenterOfCircle + Math.cos(angle) * radiusOfCircle;
        var yCoordinate = yCenterOfCircle + Math.sin(angle) * radiusOfCircle;
        document.write(xCoordinate);
        document.write("\n");
        document.write(yCoordinate);
        var point = vec2(xCoordinate, yCoordinate);
        verticesData.push(point);
   }
}

function render()
{
    gl.clear( gl.COLOR_BUFFER_BIT );
    gl.drawArrays( gl.TRIANGLE_FAN, 0, verticesData.length/ATTRIBUTES );
}

这是我的html代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Supper Bug Zapper</title>
    <script id="vertex-shader" type="x-shader/x-vertex">
        attribute vec4 vPosition;
        void main(void)
        {
            gl_Position = vPosition;
        }
    </script>

    <script id="fragment-shader" type="x-shader/x-fragment">
        precision mediump float;
        void main(void)
        {
            gl_FragColor = vec4(1.0, 0.0, 1.0, 0.5);
        }
    </script>
    <script type="text/javascript" src="js/webgl-utils.js"></script>
    <script type="text/javascript" src="js/MV.js"></script>
    <script type="text/javascript" src="js/initShaders.js"></script>
    <script type="text/javascript" src="js/superBugZapper.js"></script>
</head>
<body>
      <canvas id="gl-canvas" width="800" height="800"  style="border:1px solid #000000;">
      Oops ... your browser doesn't support the HTML5 canvas element
      </canvas>
</body>
</html>
pleup

屏幕的视口坐标在-1和1之间定义。屏幕的中心是[0,0],左下角是[-1,-1]等。

圆的半径为200,圆的中心为[400,400],在屏幕上,这是一个很大的圆,超出了右上角。

开始创建一个以[0.5,0]为中心的半径为0.5的圆。您应该会看到一些东西。

如果需要将此比例保留在缓冲区中,则还可以为顶点着色器提供一个矩阵,以将空间坐标转换为常规的openGL视口坐标。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在序言中使用递归绘制星形三角形?

来自分类Dev

如何在序言中使用递归绘制直角三角形?

来自分类Dev

如何在MATLAB中使用特定的颜色图绘制3D三角形网格形状?

来自分类Dev

如何在Android中使用Cardview附加此三角形?

来自分类Dev

仅传递三角形的边长是否足以在WebGL中绘制三角形?

来自分类Dev

如何绘制三角形?

来自分类Dev

使用for循环绘制三角形

来自分类Dev

使用双数组绘制三角形

来自分类Dev

使用递归绘制嵌套的三角形

来自分类Dev

使用Java绘制三角形

来自分类Dev

使用 OpenGL 绘制基本三角形

来自分类Dev

使用线条填充绘制的三角形

来自分类Dev

如何在Flutter中绘制尖角三角形边缘?

来自分类Dev

如何在Android画布上绘制实心三角形

来自分类Dev

如何在R中导入和绘制三角形网格?

来自分类Dev

如何在Unity 5中绘制2D三角形?

来自分类Dev

如何在Java中旋转,缩进和绘制三角形以打印梯形?

来自分类Dev

如何在Flutter中绘制带有尖头三角形的线?

来自分类Dev

如何在python中绘制三角形?

来自分类Dev

如何在 OpenGL C++ 中绘制多个三角形?

来自分类Dev

如何在 Python/PsychoPy 中绘制直角三角形?

来自分类Dev

是否可以使用 DirectX 3D 11 绘制由三角形组成的圆?

来自分类Dev

如何使用三角形顶点坐标(每个三角形有 9 个数字)在 matplotlib 中绘制 3d 三角形?

来自分类Dev

如何使用OpenGL和Haskell绘制三角形

来自分类Dev

如何使用SVG以编程方式绘制带有圆角的三角形?

来自分类Dev

如何使用OpenGL和Haskell绘制三角形

来自分类Dev

如何使用python绘制直角三角形

来自分类Dev

如何使用 QT 绘制三角形和菱形

来自分类Dev

如何使用 matplotlib 在 3D 中绘制三角形?

Related 相关文章

  1. 1

    如何在序言中使用递归绘制星形三角形?

  2. 2

    如何在序言中使用递归绘制直角三角形?

  3. 3

    如何在MATLAB中使用特定的颜色图绘制3D三角形网格形状?

  4. 4

    如何在Android中使用Cardview附加此三角形?

  5. 5

    仅传递三角形的边长是否足以在WebGL中绘制三角形?

  6. 6

    如何绘制三角形?

  7. 7

    使用for循环绘制三角形

  8. 8

    使用双数组绘制三角形

  9. 9

    使用递归绘制嵌套的三角形

  10. 10

    使用Java绘制三角形

  11. 11

    使用 OpenGL 绘制基本三角形

  12. 12

    使用线条填充绘制的三角形

  13. 13

    如何在Flutter中绘制尖角三角形边缘?

  14. 14

    如何在Android画布上绘制实心三角形

  15. 15

    如何在R中导入和绘制三角形网格?

  16. 16

    如何在Unity 5中绘制2D三角形?

  17. 17

    如何在Java中旋转,缩进和绘制三角形以打印梯形?

  18. 18

    如何在Flutter中绘制带有尖头三角形的线?

  19. 19

    如何在python中绘制三角形?

  20. 20

    如何在 OpenGL C++ 中绘制多个三角形?

  21. 21

    如何在 Python/PsychoPy 中绘制直角三角形?

  22. 22

    是否可以使用 DirectX 3D 11 绘制由三角形组成的圆?

  23. 23

    如何使用三角形顶点坐标(每个三角形有 9 个数字)在 matplotlib 中绘制 3d 三角形?

  24. 24

    如何使用OpenGL和Haskell绘制三角形

  25. 25

    如何使用SVG以编程方式绘制带有圆角的三角形?

  26. 26

    如何使用OpenGL和Haskell绘制三角形

  27. 27

    如何使用python绘制直角三角形

  28. 28

    如何使用 QT 绘制三角形和菱形

  29. 29

    如何使用 matplotlib 在 3D 中绘制三角形?

热门标签

归档