gpt4 book ai didi

ios - glDrawArrays(GL_POINTS, 0 4) 在 iOS 5.0 和 openGL ES 2.0 中不绘制点

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:51:10 25 4
gpt4 key购买 nike

我有一个简单的 OpenGL ES 2.0 代码来绘制点。这是 VAO 设置:

    static const GLfloat squareVertices[] = {
-0.5f, -0.5f, -1.0f,
0.5f, -0.5f, -1.0f,
0.5f, 0.5f, -1.0f,
-0.5f, 0.5f, -1.0f
};

static const GLfloat squareColors[] = {
1.0f, 0.0f, 0.0f, 1.0f,
0.0f, 1.0f, 0.0f, 1.0f,
0.0f, 0.0f, 1.0f, 1.0f,
1.0f, 0.0f, 1.0f, 1.0f
};
glGenVertexArraysOES(1, &_vertexArray);
glBindVertexArrayOES(_vertexArray);

glGenBuffers(1, &_vertexBuffer);
glBindBuffer(GL_ARRAY_BUFFER, _vertexBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(squareVertices), squareVertices, GL_STATIC_DRAW);

glEnableVertexAttribArray(ATTRIB_VERTEX);
glVertexAttribPointer(ATTRIB_VERTEX, 3, GL_FLOAT, GL_FALSE, 0, 0);

glGenBuffers(1, &_colorP_VBO);
glBindBuffer(GL_ARRAY_BUFFER, _colorP_VBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(squareColors), squareColors, GL_STATIC_DRAW);

glEnableVertexAttribArray(ATTRIB_COLOR);
glVertexAttribPointer(ATTRIB_COLOR, 4, GL_FLOAT, GL_FALSE, 0, 0);
glBindVertexArrayOES(0);

这是渲染代码:

    [glView setDisplayFramebuffer:glView.viewFrameBuffer];

glUseProgram(simpleShaderProgram);
glBindVertexArrayOES(_vertexArray);

// glLineWidth(5.0f);
// glDrawArrays(GL_LINE_LOOP, 0, 4);
// glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
// glEnable(GL_POINT_SMOOTH);

glPointSize(25.0f);
glDrawArrays(GL_POINTS, 0, 4);

glBindVertexArrayOES(0);

glUseProgram(0);

glBindFramebuffer(GL_FRAMEBUFFER, 0); //unbind the FBO
[glView presentFramebuffer:glView.viewFrameBuffer];

当我使用 GL_LINE_LOOP 或 GL_TRIANGLE_FAN 时,它会在屏幕上绘制彩色方 block 。但是,当我使用 GL_POINTS 时,渲染器不绘制顶点并且屏幕为空白。如果有人让我知道我错过了什么,我将不胜感激。谢谢

以下是我的顶点和片段着色器:

attribute vec4 position;
attribute vec4 v_color;

varying vec4 colorVarying;


void main()
{
colorVarying = v_color;
gl_Position = position;

}

------------------------------------------------
precision mediump float;
varying vec4 colorVarying;


void main()
{
gl_FragColor = colorVarying;
}

最佳答案

您使用的是 ES 2.0,因此 glPointSize() 调用可能不会执行任何操作。应使用内置输出变量的 gl_PointSize 在着色器中设置点大小。

关于ios - glDrawArrays(GL_POINTS, 0 4) 在 iOS 5.0 和 openGL ES 2.0 中不绘制点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9671021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com