gpt4 book ai didi

java - OpenGL绘图代码没有绘制任何东西

转载 作者:行者123 更新时间:2023-12-01 18:02:43 25 4
gpt4 key购买 nike

我有一个方法应该绘制老虎机的单个卷轴,但它似乎没有绘制我能看到的任何东西:

   void drawreel(GL10 gl) {
float increment = 0.03f;

for (float angle = 0; angle < 2.0f * Math.PI; angle += increment) {
FloatBuffer vfb = MyDirectBuffer.getFloatBuffer(100);
FloatBuffer tfb = MyDirectBuffer.getFloatBuffer(100);
FloatBuffer nfb = MyDirectBuffer.getFloatBuffer(100);

float y = (float) Math.sin(angle);
float z = (float) Math.cos(angle);
float texturey = (float) (1.0f - angle / (2.0f * Math.PI));

texturey = getYtexture(texturey);

tfb.put(0);
tfb.put(texturey);

nfb.put(0);
nfb.put(y);
nfb.put(z);

vfb.put(-0.39f);
vfb.put(y);
vfb.put(z);

tfb.put(1);
tfb.put(texturey);

nfb.put(0);
nfb.put(y);
nfb.put(z);

vfb.put(0.39f);
vfb.put(y);
vfb.put(z);

float nexty = (float) Math.sin(angle + increment);
float nextz = (float) Math.cos(angle + increment);

texturey = (float) (texturey - increment / (2 * Math.PI));

tfb.put(1);
tfb.put(texturey);

nfb.put(0);
nfb.put(nexty);
nfb.put(nextz);

vfb.put(0.39f);
vfb.put(nexty);
vfb.put(nextz);

tfb.put(0);
tfb.put(texturey);

nfb.put(0);
nfb.put(nexty);
nfb.put(nextz);

vfb.put(-0.39f);
vfb.put(nexty);
vfb.put(nextz);

gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
//gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
//gl.glEnableClientState(GL10.GL_NORMAL_ARRAY);


gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, tfb);
gl.glNormalPointer(GL10.GL_FLOAT, 0, nfb);
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vfb);

gl.glDrawArrays(GL10.GL_TRIANGLE_FAN, 0, 4);
int error = gl.glGetError();

gl.glDisableClientState(GL10.GL_NORMAL_ARRAY);
gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);


}


}

此外,这是另一个被调用的方法:

    static FloatBuffer getFloatBuffer(int numFloats)
{
ByteBuffer buffer = ByteBuffer.allocateDirect(numFloats);
buffer.order(ByteOrder.nativeOrder());
FloatBuffer newFloatBuffer = buffer.asFloatBuffer();
return newFloatBuffer;
}

我调用了glGetError,它似乎总是返回0,表示没有错误。

有人知道我如何弄清楚为什么在drawreel中似乎没有任何东西绘制吗?

谢谢。

最佳答案

我通过确保此代码存在来解决这个问题:

            gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
gl.glEnableClientState(GL10.GL_NORMAL_ARRAY);
tfb.position(0);
nfb.position(0);
vfb.position(0);

FloatBuffers 需要回滚到 0。另外,为了让老虎机向右抽奖,我需要启用所有三个客户端状态。

关于java - OpenGL绘图代码没有绘制任何东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60602290/

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