android - 使用适用于 Android 的 OpenGLEs 绘制像素

标签 android opengl-es drawing

如何使用 OpenGlEs 为 Android 绘制像素(2D View )?

用来画画很简单

draw(Canvas canvas)
{
   ...
} 

所以我们用它来画画

canvas.drawPoint(i, j, paint);

但在 OpenGlEs 中我仍然没有得到任何类似的函数。

请回复 提前致谢

最佳答案

    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";

关于android - 使用适用于 Android 的 OpenGLEs 绘制像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2827340/

相关文章:

C++ glDrawElements 数组作为参数 EXC_BAD_ACCESS 错误

java - Android - 从 Assets 中绘制图像,发生了一些奇怪的事情

javascript - 我需要在页面刷新时记住我的 Canvas 绘图

用于自由形式绘图的javascript库

android - 谷歌地图看起来像一张图片

android - 替换时销毁 fragment

具有高分辨率崩溃的Android ImageView

android - 如何在android中将对象列表从一个 Activity 传递到另一个 Activity ?

java - OpenGL 纹理不遵循几何

java - 在 Android 中显示类似字幕的滚动文本