简体   繁体   English

使用OpenGLEs for Android绘制Pixel

[英]Draw Pixel using OpenGLEs for Android

How can I draw a pixel(2D view)for Android using OpenGlEs? 如何使用OpenGlEs为Android绘制像素(2D视图)?

It is simple when we use for drawing 在用于绘画的时候很简单

draw(Canvas canvas)
{
   ...
} 

So using it we draw 所以使用它我们绘制

canvas.drawPoint(i, j, paint);

But in OpenGlEs I still haven't got any function like it. 但是在OpenGlEs中,我还没有任何类似的功能。

Please reply Thank in Advance 请事先回复谢谢

    GLES20Renderer.programLight = GLES20.glCreateProgram();
    int vertexShaderLight       = GLES20Renderer.loadShader(GLES20.GL_VERTEX_SHADER, GLES20Renderer.vertexShaderCodeLight);
    int fragmentShaderLight     = GLES20Renderer.loadShader(GLES20.GL_FRAGMENT_SHADER, GLES20Renderer.fragmentShaderCodeLight);
    GLES20.glAttachShader(GLES20Renderer.programLight, vertexShaderLight);
    GLES20.glAttachShader(GLES20Renderer.programLight, fragmentShaderLight);
    GLES20.glLinkProgram(GLES20Renderer.programLight);
    uPLocationLight             = GLES20.glGetUniformLocation(GLES20Renderer.programLight, "uP");
    uVPositionLocationLight     = GLES20.glGetUniformLocation(GLES20Renderer.programLight, "uVPosition");

    GLES20.glUseProgram(GLES20Renderer.programLight);
    GLES20.glUniform4f(uVPositionLocationLight, LightPosInEyeSpace[0], LightPosInEyeSpace[1], LightPosInEyeSpace[2], LightPosInEyeSpace[3]);
    GLES20.glUniformMatrix4fv(uPLocationLight, 1, false, ProjectionMatrix, 0);
    GLES20.glDrawArrays(GLES20.GL_POINTS, 0, 1);


private static final String vertexShaderCodeLight = 
        "uniform vec4 uVPosition;                   \n"
    +   "uniform mat4 uP;                           \n"
    +   "void main(){                               \n"
    +   " gl_PointSize = 15.0;                      \n"
    +   " gl_Position = uP * uVPosition;            \n"
    +   "}                                          \n";
private static final String fragmentShaderCodeLight = 
        "#ifdef GL_FRAGMENT_PRECISION_HIGH          \n"
    +   "precision highp float;                     \n"
    +   "#else                                      \n"
    +   "precision mediump float;                   \n"
    +   "#endif                                     \n"
    +   "void main(){                               \n"
    +   " gl_FragColor = vec4(1.0,1.0,1.0,1.0);     \n"
    +   "}                                          \n";

glDrawElements(GL_POINTS, 0, num_points, point_array); glDrawElements(GL_POINTS,0,num_points,point_array); You can also use glDrawArrays if you use glVertexPointer first. 如果先使用glVertexPointer,也可以使用glDrawArrays。

Use glPointParameter, glPointSize, and glColor to modify the appearance of the points. 使用glPointParameter,glPointSize和glColor修改点的外观。 Using glPointSizePointer lets you specify an array of point sizes, which is handy for particle effects. 使用glPointSizePointer可以指定点大小数组,这对粒子效果很方便。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM