3
ポイントを描画するための単純なOpenGL ES 2.0コードがあります。ここではVAOのセットアップです:glDrawArrays(GL_POINTS、0 4)は、iOS 5.0とOpenGL ES 2.0でポイントを描画しません
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);
、ここでレンダリングコードです:私はGL_LINE_LOOPを使用するか、それが画面上にカラフルな四角形を描画GL_TRIANGLE_FANとき
[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_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'呼び出しはおそらく何もしません。ポイントサイズはシェーダーの内側に設定する必要があります。頂点シェーダーも投稿してください。 –
頂点シェーダコードを追加しました。私の問題は、画面にポイントが表示されないことです。 1ピクセルでもない。 – sia
gl_PointSize = 5.0;頂点シェーダでトリックを行いました。助けてくれてありがとう! – sia