如何設置opengl使用glTextParameteriv正確。下面的代碼可以在模擬器中運行,但是不能在我的HTC模擬器7上運行。也許有人可以用他自己的手機來試試嗎?opengles glTexParameteriv
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:ERROR/AndroidRuntime(2524):致命異常:GLThread 10 04-19 20:24:23.225:ERROR/AndroidRuntime(2524 ):android.opengl.GLException:invalid value 04-19 20:24:23.225:ERROR/AndroidRuntime(2524):at android.opengl.GLErrorWrapper.checkError(GLErrorWrapper.java:62) 04-19 20:24: 23.225:ERROR/AndroidRuntime(2524):在android.opengl.GLErrorWrapper.glTexParameteriv(GLErrorWrapper.java:803) 04-19 20:24:23.225:ERROR/AndroidRuntime(2524):在android.opengl.GLLogWrapper.glTexParameteriv( GLLogWrapper.jav a:2512) 04-19 20:24:23.225:ERROR/AndroidRuntime(2524):at dk.opengltest.GLView.onSurfaceCreated(GLView.java:93) 04-19 20:24:23.225:ERROR/AndroidRuntime( 2524):at android.opengl.GLSurfaceView $ GLThread.guardedRun(GLSurfaceView.java:1348) 04-19 20:24:23.225:ERROR/AndroidRuntime(2524):at android.opengl.GLSurfaceView $ GLThread.run(GLSurfaceView。 java:1118)
glDebugFlags處於活動狀態。複製品島使用相同的技術來繪製作品,所以我認爲我只是錯過了一些東西,但我不知道什麼...
如果我不啓用glDebugFlags繪製的矩形僅僅是灰色的。 ..也許我的圖像格式有問題? – SACO 2011-04-19 18:33:12
沒有人知道任何答案? – SACO 2011-04-22 17:03:23