opengles glTexParameteriv - PullRequest
       18

opengles glTexParameteriv

0 голосов
/ 16 апреля 2011

как настроить opengl для правильного использования glTextParameteriv.Следующий код работает в эмуляторе, но не по моему желанию htc с cyanogen mod 7. Может быть, кто-то может попробовать его на своем собственном телефоне?

public class GLView extends GLSurfaceView implements GLSurfaceView.Renderer {

public GLView(Context context) {
    super(context);
    setDebugFlags(DEBUG_CHECK_GL_ERROR | DEBUG_LOG_GL_CALLS);
    setRenderer(this);
}

int textureID;

@Override
public void onDrawFrame(GL10 gl) {
    gl.glMatrixMode(GL10.GL_MODELVIEW); 
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);

    gl.glBindTexture(GL10.GL_TEXTURE_2D, textureID);        
    ((GL11Ext)gl).glDrawTexfOES(10, 10, 0, 100, 100);
}

@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
    gl.glViewport(0, 0, width, height);
}

@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
    Bitmap bitmap;
    int[] textures;
    InputStream is;

    is = getResources().openRawResource(R.drawable.skater_idle_roll);

    try {
        BitmapFactory.Options sBitmapOptions  = new BitmapFactory.Options();
        // Set our bitmaps to 16-bit, 565 format.
        sBitmapOptions.inPreferredConfig = Bitmap.Config.RGB_565;
        bitmap = BitmapFactory.decodeStream(is, null, sBitmapOptions);
    } finally {
        try {
            is.close();
        } catch (IOException e) {
            // Ignore.
        }
    }

    //gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST);
    gl.glClearColor(0.5f, 0.5f, 0.5f, 1);
    gl.glShadeModel(GL10.GL_FLAT);

    gl.glDisable(GL10.GL_DEPTH_TEST);
    gl.glDisable(GL10.GL_DITHER);
    gl.glDisable(GL10.GL_LIGHTING);

    gl.glEnable(GL10.GL_TEXTURE_2D);
    gl.glEnable(GL10.GL_BLEND);
    gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
    gl.glColor4x(0x10000, 0x10000, 0x10000, 0x10000);

    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);

    textures = new int[1];
    gl.glGenTextures(1, textures, 0);
    textureID = textures[0];

    int[] crop = new int[4];

    crop[0] = 0;
    crop[1] = bitmap.getHeight();
    crop[2] = bitmap.getWidth();
    crop[3] = -bitmap.getHeight();

    gl.glBindTexture(GL10.GL_TEXTURE_2D, textureID);
    GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);        

    // here EXCEPTION is thrown
    ((GL11) gl).glTexParameteriv(GL10.GL_TEXTURE_2D, GL11Ext.GL_TEXTURE_CROP_RECT_OES, crop, 0); 
}

}

DDMS Ausgabe:

04-19 20:24: 23.225: ОШИБКА / AndroidRuntime (2524): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: GLThread 10 04-19 20: 24: 23.225: ОШИБКА / AndroidRuntime (2524): android.opengl.GLException: недопустимое значение 04-19 20: 24: 23.225: ОШИБКА/ AndroidRuntime (2524): в android.opengl.GLErrorWrapper.checkError (GLErrorWrapper.java:62) 04-19 20: 24: 23.225: ОШИБКА / AndroidRuntime (2524): в android.opengl.GLErrorWrapper.glTexParameteriv (GLErrorWpper:803) 04-19 20: 24: 23.225: ОШИБКА / AndroidRuntime (2524): at android.opengl.GLLogWrapper.glTexParameteriv (GLLogWrapper.java:2512) 04-19 20: 24: 23.225: ОШИБКА / AndroidRuntime (2524): вdk.opengltest.GLView.onSurfaceCreated (GLView.java:93) 04-19 20: 24: 23.225: ОШИБКА / AndroidRuntime (2524): в android.opengl.GLSurfaceView $ GLThread.guardedRun (GLSurfaceView.java:1348) 04-1920: 24: 23.225: ОШИБКА / AndroidRuntime (2524): на android.opengl.GLSurfaceView $ GLThread.run (GLSurfaceView.java:1118)

glDebugFlags активны.Остров Реплики, который использует ту же технику для рисования работ, так что я думаю, что мне чего-то не хватает, но я не знаю, что ...

1 Ответ

1 голос
/ 28 ноября 2011

Я знаю, что мой телефон Samsung работал с текстурами иначе, чем мой Nexus. Я должен был убедиться, что моя текстура была точной степени 2, чтобы она работала правильно.

Посмотрите, каково разрешение ваших текстур, и измените их на 2,4,8,16,32,64,128,256 ... и т.д.

...