簡體   English   中英

如何在android上更新頂點緩沖區?

[英]How to update vertex buffer on android?

我在更新android上的頂點信息時遇到了麻煩。 基本上, FloatBuffer最初包含一個立方體的形狀,但我想在按下的按鈕上轉換這個形狀,所以我必須在每次按下UI按鈕時更新頂點值。 我使用以下函數來更改FloatBuffer

public float increment(float value)
    {
        float v = 0.0f;
        for(int i = 0; i < boxf.length; i++)
        {
            if(i % 3 == 2 && boxf[i] > 0.0f)
            {
                this_boxf[i] += value;
                box.put(i, this_boxf[i]);
                v = box.get(i);
            }
        }
        return v;
    }

這是繪圖功能:

public void draw(GL10 gl) {
        gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
        gl.glEnableClientState(GL10.GL_NORMAL_ARRAY);

        gl.glVertexPointer(3, GL10.GL_FLOAT, 0, box);
        gl.glNormalPointer(GL10.GL_FLOAT,0, normals);
            gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4);
            gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 4, 4);
            gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 8, 4);
            gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 12, 4);
            gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 16, 4);
            gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 20, 4);
        gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
        gl.glDisableClientState(GL10.GL_NORMAL_ARRAY);
    }

多維數據集顯示正確,但當我嘗試更改其FloatBuffer ,沒有任何更改。 我在google上閱讀,似乎我必須使用glBufferData 但是, GL10沒有這樣的功能。 我怎么做到這一點?

如果渲染模式設置為RENDERMODE_WHEN_DIRTY那么只有在視圖失效或調用requestRender()時才會調用draw()函數,因此在更新頂點緩沖區時不會看到任何更改。

要查看更改,可以將渲染模式設置為RENDERMODE_CONTINUOUSLY或者在更新頂點緩沖區后在GLSurfaceView對象上調用requestRender()。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM