gpt4 book ai didi

java - OpenGL 线条在屏幕中间相交而不是直线

转载 作者:行者123 更新时间:2023-12-01 15:48:30 25 4
gpt4 key购买 nike

我尝试用 OpenGL 画一条线,该线从屏幕的一个边缘水平延伸到另一个边缘(在 Android 手机上)。它应该通过读取加速度传感器来上下移动。我的问题是,该线仅在端点处上下移动。在中间,它保持在 0,0(屏幕中间)。因此该线具有字母 V 的形式。

这是我的代码:

@Override
public void onDrawFrame(GL10 gl) {
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glClearColor(0f, 0f, 0f, 0f);

float vertices[] = {
0-width/2,-accel,0,
width/2,-accel,0
};
ByteBuffer vbb = ByteBuffer.allocateDirect(vertices.length * 4);
vbb.order(ByteOrder.nativeOrder());
FloatBuffer vertexBuffer = vbb.asFloatBuffer();
vertexBuffer.put(vertices);
vertexBuffer.position(0);

gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexBuffer);

short[] indices = { 0, 1, 2, 0, 2, 3 };
ByteBuffer ibb = ByteBuffer.allocateDirect(indices.length * 2);
ibb.order(ByteOrder.nativeOrder());
ShortBuffer indexBuffer = ibb.asShortBuffer();
indexBuffer.put(indices);
indexBuffer.position(0);

gl.glFrontFace(GL10.GL_CCW);
gl.glEnable(GL10.GL_CULL_FACE);
gl.glCullFace(GL10.GL_BACK);

gl.glDrawElements(GL10.GL_LINE_LOOP, indices.length,
GL10.GL_UNSIGNED_SHORT, ibb);

gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);

}

最佳答案

您确定您的索引正确吗?如果我理解正确的话,你只有 2 个顶点,但你的索引使用 4 个顶点。我查看了 http://www.songho.ca/opengl/gl_vertexarray.html 中的示例想出这个。

关于java - OpenGL 线条在屏幕中间相交而不是直线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6623965/

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