- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在 View 中间绘制(我想绘制)一个点,我在 AVD(Nexus 4、Android 4.4.2 - API 级别 19、Intel Atom (x86)、RAM 768 ,使用主机 GPU),但我在真实设备 [Nexus 5、Nexus 7(2012 版)] 上绘制时遇到问题。在真实设备上只有空白(清晰的颜色) View ,中间没有任何点。
这是完整的代码。比较简单。请注意,我还尝试通过 glVertexAttribPointer (glEnableVertexAttribArray) 推送点数据(位置)。
你能帮我解决这个问题吗?
package com.example.point.app;
import android.app.Activity;
import android.content.Context;
import android.opengl.GLES20;
import android.opengl.GLSurfaceView;
import android.os.Bundle;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new PointView(this));
}
class PointView extends GLSurfaceView {
public PointView(Context context) {
super(context);
setEGLContextClientVersion(2);
setEGLConfigChooser(8, 8, 8, 8, 16, 0);
setRenderer(new PointRenderer());
}
class PointRenderer implements Renderer {
private void checkError(String message) {
int err = GLES20.glGetError();
if (err != GLES20.GL_NO_ERROR) {
throw new RuntimeException(message + " -> " + err);
}
}
private int createShader(int type, String source) {
int shader = GLES20.glCreateShader(type);
GLES20.glShaderSource(shader, source);
checkError("glShaderSource");
GLES20.glCompileShader(shader);
checkError("glCompileShader");
return shader;
}
@Override
public void onSurfaceCreated(GL10 unused, EGLConfig config) {
int vertex = createShader(GLES20.GL_VERTEX_SHADER, "" +
"void main() {" +
" gl_Position = vec4(0, 0, 0, 1);" +
" gl_PointSize = 100;" +
"}");
int fragment = createShader(GLES20.GL_FRAGMENT_SHADER, "" +
"precision mediump float;" +
"void main() {" +
" gl_FragColor = vec4(1, 0, 1, 1);" +
"}");
program = GLES20.glCreateProgram();
checkError("glCreateProgram");
GLES20.glAttachShader(program, vertex);
checkError("glAttachShader(vertex)");
GLES20.glAttachShader(program, fragment);
checkError("glAttachShader(fragment)");
GLES20.glLinkProgram(program);
checkError("glLinkProgram");
}
@Override
public void onSurfaceChanged(GL10 unused, int width, int height) {
}
@Override
public void onDrawFrame(GL10 unused) {
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
GLES20.glUseProgram(program);
GLES20.glDrawArrays(GLES20.GL_POINTS, 0, 1);
}
private int program;
}
}
}
最佳答案
我读取错误并使用了 float
"gl_PointSize = 100;" -> "gl_PointSize = 100.0;"
此更改后,我看到了预期的结果。
关于android - 绘图 GL_POINTS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24055683/
当我将鼠标悬停在 GL_POINTS 上时,它会显示 #define GL_POINTS 0x0000 它属于原始类别 同样,GL_POINT 属于“多边形”类别,并且显示描述: #define GL
在现代硬件上,使用完整三角形 (GL_TRIANGLES) 绘制场景与仅绘制顶点 (GL_POINTS) 在性能上有什么不同吗? GL_POINTS 的初始化方式如下: glPointSize(1.0
我有这段代码应该在屏幕上绘制一些点: glBegin(GL_POINTS); for(int i = 0; i < x; i++) { for(int j = 0; j
我有一个火灾模拟,包含大量带纹理的GL_POINTS。每个粒子都有一个透明的背景,当从特定角度面对火焰时,混合工作正常。然而,从其他角度查看它会显示背景,这些背景应该是透明的,遮挡了在其他人后面渲染的
我正在 View 中间绘制(我想绘制)一个点,我在 AVD(Nexus 4、Android 4.4.2 - API 级别 19、Intel Atom (x86)、RAM 768 ,使用主机 GPU),
我有一个用纯色绘制粒子的着色器。我想让着色器对 FBO 纹理进行采样,以便每个粒子都可以作用于它“背后”的颜色。看起来应该很简单,但不是。 我已经简化了代码,这样我希望我的 FBO 被绘制在每个粒子的
我尝试使用下面的代码用opengl绘制一个正方形像素 glPointSize(5.0f); glBegin(GL_POINTS); glVertex3f(1.0f, 1.0f, 1.0f); glEn
我想用 GL_POINTS 绘制一些东西,但在 ~totalpoint/3 结果开始后与输入相差 1 个像素 我尝试了不同的 glOrtho 和 glViewport 参数,但没有任何改变 我的测试程
我正在尝试在 Android 中使用 OpenGL ES 生成随机等高线图。我创建了一个 Point 类用于在屏幕上绘制点,但我不知道绘制随机点的方法应该是什么。 例如,为了显示 2 个点,我创建了
如何在 opengl 中为 GL_POINTS 启用两侧照明?似乎 glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE); 仅适用于构面,但不适用于 GL_P
我正在绘制 GL_POINTS 使用glDrawArrays(GL_POINTS, 0, numberOfPoints)使用 gl_PointSize 在我的顶点着色器中设置每个点的大小。我从 glm
我正在尝试向我的旧 OpenGL 程序添加一些着色器,该程序绘制了大量 GL_POINTS 和一些 GL_LINES。 我创建了这两个着色器: 顶点着色器: void main() { vec
如何使我的 GL_POINT 更大?我正在使用 glPointSize,但它只能工作到一定大小。所以如果我写 glPointSize(100); 大小相同 glPointSize(500); 如何使其
一段时间以来,我一直在使用 OpenGL 来制作 3D 应用程序,但我从来没有真正理解在生产阶段使用 GL_POINT 和 GL_LINES 原始绘图类型用于 3D 游戏。 (哪里)OpenGL 中的
pyglet 初学者。我在使用 pyglet.graphicss.draw() 绘制 GL_POINT 时遇到问题。我希望在下一个像素缓冲区上绘制这个 GL_POINT ,但似乎该函数不会保留在下一个
所以基本上我试图了解像素以及 OpenGL 在使用 GL_POINTS 渲染它们时如何处理它们(如果它也适用于纹理缓冲区): 这是渲染到屏幕后上传的结果图像(我试图放更多更小的但我只允许两个链接) 首
这是一个作业,我需要使用 OpenGL 来渲染一条线,但只使用 GL_POINTS。 我正在用 P1(-1,-1) 到 P2(1,-1) 的水平线对其进行测试。 我的函数使用直线函数 y=mx+c:
我有一个由很多点组成的场景,我用它绘制了 glBegin(GL_POINTS); glVertex3f(x[i],y[i],z[i]); // the points are displayed pro
我必须支持一些使用以下代码绘制点云的遗留代码: glEnableClientState(GL_VERTEX_ARRAY); glVertexPointer(3, GL_FLOAT, 0, (float
绘制大量点时,有没有办法改变点的大小?我知道有 glPointSize(float),但是有没有办法在“批处理”或数组中做到这一点? 我希望点具有基于数据属性的不同大小。例如每个点都有 x、y、z 和
我是一名优秀的程序员,十分优秀!