एंड्रॉयड पर का उपयोग कर, मैं एक साधारण ओपन ES 2.0 आवेदन चल रहा है, जो एक शीर्ष बफर वस्तु का उपयोग करता है पाने के लिए कोशिश कर रहा हूँ, लेकिन मैं असफल रहा।वर्टेक्स बफर ऑब्जेक्ट (VBO) एंड्रॉयड 2.3.3 पर काम नहीं कर, GLES20
मैं इस परियोजना के साथ शुरू किया:
http://developer.android.com/resources/tutorials/opengl/opengl-es20.html
सब कुछ अच्छी तरह से समझाया और काम करता है के रूप में वर्णन किया। ठीक।
मैं glDrawElements साथ glDrawArrays के बजाय कमांड वैकल्पिक रूप से प्रतिपादन करने के लिए कुछ कोड जोड़ा,। मैं सफल हुआ।
अब अगले कदम: मैं एक वर्टेक्स बफर वस्तु का उपयोग करने के एक ही बात करना चाहता हूँ।
नई वार्स:
तो मैं इस जोड़ा
निजी पूर्णांक [] mVBOid = नई int [2]; वीबीओ और इंडेक्स बफर के लिए आवश्यक // 2 आईडी निजी शॉर्टबफर माइंडिस; // सूचकांक
VBO बनाने के लिए कोड जोड़ा इस्तेमाल किया:
ByteBuffer vbb = ByteBuffer.allocateDirect( triangleCoords.length * SIZEOF_FLOAT); vbb.order(ByteOrder.nativeOrder());// use the device hardware's native byte order mTriangleVB = vbb.asFloatBuffer(); // create a floating point buffer from the ByteBuffer mTriangleVB.put(triangleCoords); // add the coordinates to the FloatBuffer mTriangleVB.position(0); // set the buffer to read the first coordinate ByteBuffer ibb = ByteBuffer.allocateDirect( indices.length * SIZEOF_SHORT); ibb.order(ByteOrder.nativeOrder()); // use the device hardware's native byte order mIndices = ibb.asShortBuffer(); // create a short buffer from the ByteBuffer mIndices.put(indices); // add the indices to the Buffer mIndices.position(0); // set the buffer to read the first index GLES20.glGenBuffers(2, mVBOid, 0); GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, mVBOid[0]); GLES20.glBufferData(GLES20.GL_ARRAY_BUFFER, numComponentsPerVertex * SIZEOF_FLOAT, mTriangleVB, GLES20.GL_STATIC_DRAW); GLES20.glBindBuffer(GLES20.GL_ELEMENT_ARRAY_BUFFER, mVBOid[1]); GLES20.glBufferData(GLES20.GL_ELEMENT_ARRAY_BUFFER, mNumIndices * SIZEOF_SHORT, mIndices, GLES20.GL_STATIC_DRAW);
ज्यामिति आकर्षित करने के लिए कोड कहा:
GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, mVBOid[0]); GLES20.glVertexAttribPointer(maPositionHandle, nc, GLES20.GL_FLOAT, false, stride, 0); GLES20.glEnableVertexAttribArray(maPositionHandle); GLES20.glBindBuffer(GLES20.GL_ELEMENT_ARRAY_BUFFER, mVBOid[1]); GLES20.glDrawElements(GLES20.GL_TRIANGLE_FAN, mNumIndices, GLES20.GL_UNSIGNED_SHORT, 0);
नोट: करने के लिए सबसे पहले लागू किया नई कार्यक्षमता के रूप में VBO का उपयोग किए बिना glDrawElements का उपयोग करके ज्यामिति प्रस्तुत करना काम कर रहा है, मुझे पता है कि mTriangleVB और mIndices चर आवश्यक डेटा से सही ढंग से भरे हुए हैं। इसके अलावा maPositionHandle और muMVPMatrixHandle सही हैं। मेरे कोड मैं जीएल त्रुटियों की जांच में - कोई भी
पाए जाते हैंमेरे समस्या: VBO तकनीक काम नहीं कर रहा है; स्पष्ट रंग को छोड़कर, स्क्रीन पर कुछ भी नहीं देखा जाता है। , VBOs जो सही ढंग से गाया गया अदृश्य हैं का उपयोग करते समय एक VBO आधारित ज्यामिति शुरू की है
विभाजन दोष occasionaly रिपोर्ट कर रहे हैं बिना
अन्य geometries: एक अधिक जटिल आवेदन में मैं और अधिक समस्याओं मिलता है। सटीक कारण प्राप्त करने का प्रयास करते हुए मैंने बहुत सारे कोड पर टिप्पणी की, और अंततः पाया कि दुर्घटना तब भी होती है जब ज्यामिति बिल्कुल प्रस्तुत नहीं होती है। दुर्घटना का कारण वीबीओ का प्रारंभ होना चाहिए - हालांकि दुर्घटना तुरंत नहीं होती है, लेकिन कुछ समय बाद।
लेकिन मैं अभी भी यह नहीं समझ सकता कि यह क्यों काम नहीं कर रहा है।मेरे पर्यावरण::
- एंड्रॉयड 2.3.3
- बिल्ड लक्ष्य: एंड्रॉयड 2,3
यहाँ कुछ अधिक जानकारी है।3
- Android SDK Tools: रेव 15
- एंड्रॉयड एसडीके मंच उपकरण: रेव 9
- डिवाइस: Huawei Ideos X3 स्मार्टफोन
SimpleOpenGLES20Renderer वर्ग के लिए पूरा स्रोत।
कोड इस नमूने पर आधारित है:
http://developer.android.com/resources/tutorials/opengl/opengl-es20.html
package com.hugo.simplegles20;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
import java.nio.ShortBuffer;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
import android.opengl.GLES20;
import android.opengl.GLSurfaceView;
import android.opengl.Matrix;
import android.util.Log;
public class SimpleOpenGLES20Renderer implements GLSurfaceView.Renderer {
public float mAngle;
static String TAG = "SimpleTest";
final int SIZEOF_FLOAT = Float.SIZE/8;
final int SIZEOF_SHORT = Short.SIZE/8;
private int[] mVBOid = new int[2]; // 2 ids needed for VBO and index buffer oject
enum TestType {
USE_ARRAY, // (almost) the original code
USE_ELEMENTS, // rendering, using glDrawElements call
USE_VBO_ELEMENTS // using a vertex buffer object (VBO)
}
private TestType mUsage = TestType.USE_VBO_ELEMENTS;
private boolean mFourComponents = true;
private int mNumIndices = 0;
private FloatBuffer mTriangleVB;
private ShortBuffer mIndices;
private final String vertexShaderCode =
// This matrix member variable provides a hook to manipulate
// the coordinates of the objects that use this vertex shader
"uniform mat4 uMVPMatrix; \n" +
"attribute vec4 vPosition; \n" +
"void main(){ \n" +
// the matrix must be included as a modifier of gl_Position
" gl_Position = uMVPMatrix * vPosition; \n" +
"} \n";
private final String fragmentShaderCode =
"precision mediump float; \n" +
"void main(){ \n" +
" gl_FragColor = vec4 (0.63671875, 0.76953125, 0.22265625, 1.0); \n" +
"} \n";
private int mProgram;
private int maPositionHandle;
private int muMVPMatrixHandle;
private float[] mMVPMatrix = new float[16];
private float[] mMMatrix = new float[16];
private float[] mVMatrix = new float[16];
private float[] mProjMatrix = new float[16];
public static void checkGLError(String msg) {
int e = GLES20.glGetError();
if (e != GLES20.GL_NO_ERROR) {
Log.d(TAG, "GLES20 ERROR: " + msg + " " + e);
Log.d(TAG, errString(e));
}
}
public static String errString(int ec) {
switch (ec) {
case GLES20.GL_NO_ERROR:
return "No error has been recorded.";
case GLES20.GL_INVALID_ENUM:
return "An unacceptable value is specified for an enumerated argument.";
case GLES20.GL_INVALID_VALUE:
return "A numeric argument is out of range.";
case GLES20.GL_INVALID_OPERATION:
return "The specified operation is not allowed in the current state.";
case GLES20.GL_INVALID_FRAMEBUFFER_OPERATION:
return "The command is trying to render to or read from the framebuffer" +
" while the currently bound framebuffer is not framebuffer complete (i.e." +
" the return value from glCheckFramebufferStatus is not" +
" GL_FRAMEBUFFER_COMPLETE).";
case GLES20.GL_OUT_OF_MEMORY:
return "There is not enough memory left to execute the command." +
" The state of the GL is undefined, except for the state" +
" of the error flags, after this error is recorded.";
default :
return "UNKNOW ERROR";
}
}
@Override
public void onSurfaceCreated(GL10 uu, EGLConfig config) {
// Set the background frame color
GLES20.glClearColor(0.5f, 0.5f, 0.5f, 1.0f);
checkGLError("onSurfaceCreated 1");
initShapes();
Log.d(TAG, "load vertex shader");
int vertexShader = loadShader(GLES20.GL_VERTEX_SHADER, vertexShaderCode);
Log.d(TAG, "load fragment shader");
int fragmentShader = loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentShaderCode);
mProgram = GLES20.glCreateProgram(); // create empty OpenGL Program
checkGLError("onSurfaceCreated 2");
GLES20.glAttachShader(mProgram, vertexShader); // add the vertex shader to program
checkGLError("onSurfaceCreated 3");
GLES20.glAttachShader(mProgram, fragmentShader); // add the fragment shader to program
checkGLError("onSurfaceCreated 4");
GLES20.glLinkProgram(mProgram); // creates OpenGL program executables
checkGLError("onSurfaceCreated 5");
// get handle to the vertex shader's vPosition member
maPositionHandle = GLES20.glGetAttribLocation(mProgram, "vPosition");
checkGLError("onSurfaceCreated 6");
muMVPMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uMVPMatrix");
checkGLError("onSurfaceCreated 7");
}
@Override
public void onSurfaceChanged(GL10 unused, int width, int height) {
GLES20.glViewport(0, 0, width, height);
float ratio = (float) width/height;
// this projection matrix is applied to object coordinates
// in the onDrawFrame() method
Matrix.frustumM(mProjMatrix, 0, -ratio, ratio, -1, 1, 3, 7);
Matrix.setLookAtM(mVMatrix, 0, 0, 0, -3, 0f, 0f, 0f, 0f, 1.0f, 0.0f);
}
@Override
public void onDrawFrame(GL10 uu) {
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT);
checkGLError("onDrawFrame 1");
// Add program to OpenGL environment
GLES20.glUseProgram(mProgram);
checkGLError("onDrawFrame 2");
// Use the mAngle member as the rotation value
Matrix.setRotateM(mMMatrix, 0, mAngle, 0, 0, 1.0f);
// Apply a ModelView Projection transformation
Matrix.multiplyMM(mMVPMatrix, 0, mVMatrix, 0, mMMatrix, 0);
Matrix.multiplyMM(mMVPMatrix, 0, mProjMatrix, 0, mMVPMatrix, 0);
GLES20.glUniformMatrix4fv(muMVPMatrixHandle, 1, false, mMVPMatrix, 0);
checkGLError("onDrawFrame 3");
int nc = mFourComponents ? 4 : 3;
int stride = nc * SIZEOF_FLOAT;
switch (mUsage) {
case USE_ARRAY:
// Prepare the triangle data
GLES20.glVertexAttribPointer(maPositionHandle, nc, GLES20.GL_FLOAT, false, stride, mTriangleVB);
checkGLError("onDrawFrame 4");
GLES20.glEnableVertexAttribArray(maPositionHandle);
checkGLError("onDrawFrame 5");
// Draw the triangle
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_FAN, 0, mNumIndices);
checkGLError("onDrawFrame 6");
break;
case USE_ELEMENTS:
// Prepare the triangle data
GLES20.glVertexAttribPointer(maPositionHandle, nc, GLES20.GL_FLOAT, false, stride, mTriangleVB);
checkGLError("onDrawFrame 7");
GLES20.glEnableVertexAttribArray(maPositionHandle);
checkGLError("onDrawFrame 8");
// Draw the triangle
// int indicesSizeInBytes = SIZEOF_SHORT * mNumIndices;
GLES20.glDrawElements(GLES20.GL_TRIANGLE_FAN, mNumIndices, GLES20.GL_UNSIGNED_SHORT, mIndices);
checkGLError("onDrawFrame 9");
break;
case USE_VBO_ELEMENTS:
GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, mVBOid[0]);
checkGLError("onDrawFrame 14");
GLES20.glVertexAttribPointer(maPositionHandle, nc, GLES20.GL_FLOAT, false, stride, 0);
checkGLError("onDrawFrame 15");
GLES20.glEnableVertexAttribArray(maPositionHandle);
checkGLError("onDrawFrame 16");
GLES20.glBindBuffer(GLES20.GL_ELEMENT_ARRAY_BUFFER, mVBOid[1]);
checkGLError("onDrawFrame 17");
GLES20.glDrawElements(GLES20.GL_TRIANGLE_FAN, mNumIndices, GLES20.GL_UNSIGNED_SHORT, 0);
checkGLError("onDrawFrame 18");
break;
}
}
private void initShapes(){
float triangleCoords3[] = {
// X, Y, Z
-0.5f, -0.5f, 0,
-0.5f, 0.5f, 0,
-0.2f, -0.2f, 0,
0.5f, -0.5f, 0
};
float triangleCoords4[] = {
// X, Y, Z, W
-0.5f, -0.5f, 0, 1,
-0.5f, 0.5f, 0, 1,
-0.2f, -0.2f, 0, 1,
0.5f, -0.5f, 0, 1
};
short[] indices = {0,1,2,3};
float[] triangleCoords;
int numComponentsPerVertex;
if (mFourComponents) {
triangleCoords = triangleCoords4;
numComponentsPerVertex = 4;
} else {
triangleCoords = triangleCoords3;
numComponentsPerVertex = 3;
}
mNumIndices = triangleCoords.length/numComponentsPerVertex;
Log.d(TAG, "Components per Vertex: " + numComponentsPerVertex);
Log.d(TAG, "Number of Indices : " + mNumIndices);
switch (mUsage) {
case USE_ARRAY:
{
Log.d(TAG, "using array");
// initialize vertex Buffer for triangle
ByteBuffer vbb = ByteBuffer.allocateDirect(
// (# of coordinate values * 4 bytes per float)
triangleCoords.length * SIZEOF_FLOAT);
vbb.order(ByteOrder.nativeOrder());// use the device hardware's native byte order
mTriangleVB = vbb.asFloatBuffer(); // create a floating point buffer from the ByteBuffer
mTriangleVB.put(triangleCoords); // add the coordinates to the FloatBuffer
mTriangleVB.position(0); // set the buffer to read the first coordinate
break;
}
case USE_ELEMENTS:
{
Log.d(TAG, "using VBO elements");
// initialize vertex Buffer for triangle
ByteBuffer vbb = ByteBuffer.allocateDirect(
// (# of coordinate values * 4 bytes per float)
triangleCoords.length * SIZEOF_FLOAT);
vbb.order(ByteOrder.nativeOrder());// use the device hardware's native byte order
mTriangleVB = vbb.asFloatBuffer(); // create a floating point buffer from the ByteBuffer
mTriangleVB.put(triangleCoords); // add the coordinates to the FloatBuffer
mTriangleVB.position(0); // set the buffer to read the first coordinate
vbb = ByteBuffer.allocateDirect(
// (# of coordinate values * 2 bytes per short)
indices.length * SIZEOF_SHORT);
vbb.order(ByteOrder.nativeOrder()); // use the device hardware's native byte order
mIndices = vbb.asShortBuffer(); // create a short buffer from the ByteBuffer
mIndices.put(indices); // add the indices to the Buffer
mIndices.position(0); // set the buffer to read the first index
break;
}
case USE_VBO_ELEMENTS:
{
Log.d(TAG, "using VBO elements");
ByteBuffer vbb = ByteBuffer.allocateDirect(
// (# of coordinate values * 4 bytes per float)
triangleCoords.length * SIZEOF_FLOAT);
vbb.order(ByteOrder.nativeOrder());// use the device hardware's native byte order
mTriangleVB = vbb.asFloatBuffer(); // create a floating point buffer from the ByteBuffer
mTriangleVB.put(triangleCoords); // add the coordinates to the FloatBuffer
mTriangleVB.position(0); // set the buffer to read the first coordinate
ByteBuffer ibb = ByteBuffer.allocateDirect(
indices.length * SIZEOF_SHORT);
ibb.order(ByteOrder.nativeOrder()); // use the device hardware's native byte order
mIndices = ibb.asShortBuffer(); // create a short buffer from the ByteBuffer
mIndices.put(indices); // add the indices to the Buffer
mIndices.position(0); // set the buffer to read the first index
GLES20.glGenBuffers(2, mVBOid, 0);
checkGLError("initShapes 4");
GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, mVBOid[0]);
checkGLError("initShapes 5");
GLES20.glBufferData(GLES20.GL_ARRAY_BUFFER,
numComponentsPerVertex * SIZEOF_FLOAT,
mTriangleVB,
GLES20.GL_STATIC_DRAW);
checkGLError("initShapes 6");
GLES20.glBindBuffer(GLES20.GL_ELEMENT_ARRAY_BUFFER, mVBOid[1]);
checkGLError("initShapes 7");
GLES20.glBufferData(GLES20.GL_ELEMENT_ARRAY_BUFFER,
mNumIndices * SIZEOF_SHORT,
mIndices,
GLES20.GL_STATIC_DRAW);
checkGLError("initShapes 8");
break;
}
}
}
private int loadShader(int type, String shaderCode){
// create a vertex shader type (GLES20.GL_VERTEX_SHADER)
// or a fragment shader type (GLES20.GL_FRAGMENT_SHADER)
int shader = GLES20.glCreateShader(type);
checkGLError("loadShader 1");
// add the source code to the shader and compile it
GLES20.glShaderSource(shader, shaderCode);
checkGLError("loadShader 2");
GLES20.glCompileShader(shader);
checkGLError("loadShader 3");
// Get the compilation status.
final int[] compileStatus = new int[1];
GLES20.glGetShaderiv(shader, GLES20.GL_COMPILE_STATUS, compileStatus, 0);
checkGLError("loadShader 4");
// If the compilation failed, delete the shader.
if (compileStatus[0] == 0)
{
Log.e(TAG, "Error compiling shader: " + GLES20.glGetShaderInfoLog(shader));
GLES20.glDeleteShader(shader);
checkGLError("loadShader 5");
shader = 0;
}
return shader;
}
}
क्रैश डम्प: 12-18 14: 59: ०२.७९०: मैं/डिबग (85): * * * * * * * * * * * * * * * *
12-18 14: 59: ०२.७९०: मैं/डिबग (85): निर्माण अंगुली की छाप: 'Huawei/U8510/hwu8510: 2.3.3/HuaweiU8510/C169B831: उपयोगकर्ता/ओटा-रिला-चाबियाँ, रिलीज-कीज '
12-18 14: 59: 02.790: I/DEBUG (85): pid: 1638, tid: 1646 >>> com.gles20.step1 < < < 12 -18 14: 59: 02.7 9 0: I/DEBUG (85): सिग्नल 11 (एसआईजीएसईजीवी), कोड 1 (एसईजीवी_Mएपीईआरआर), गलती योजक 00368000 12-18 14: 59: 02.790: I/DEBUG (85): r0 44affc80 r1 00367ff0 r2 0004f03c r3 00000000 12-18 14: 59: 02.790: I/DEBUG (85): r4 00000000 r5 00000000 r6 00000000 r7 00000028 12-18 14: 59: 02.790: I/DEBUG (85): r8 00000000 r9 00000000 10 00000000 एफपी 00000000 12-18 14: 59: 02.7 9 0: आई/डेबग (85): आईपी 00368000 एसपी 443ef9d0 lr 80e02a08 पीसी afd0cd7c cpsr 20000010 12-18 14: 59: 02.790: I/DEBUG (85): d0 c420e36a40000000 d1 3f800000c4a0e36a 12-18 14: 59: ०२.७९०: मैं/डिबग (85): d2 000000003f800000 d3 000000003f800000 12-18 14: 59: ०२.७९०: मैं/डिबग (85): d4 -0000000000000000 d5 -0000000000000000 12-18 14 : 5 9: 02.7 9 0: आई/डेबग (85): डी 6 3 एफ 80000000000000 डी 7 3 एफ 8000003 एफ 800000 12-18 14: 5 9: 02.7 9 0: आई/डेबग (85): डी 8 0000000000000000 डी 9 0000000000000000 12-18 14: 59: 02.800: आई/डेबग (85): डी 10 0000000000000000 डी 11 0000000000000000 12-18 14:59: 02.800: I/DEBUG (85): डी 12 0000000000000000 डी 13 0000000000000000 12-18 14: 59: 02.800: I/DEBUG (85): d14 0000000000000000 d15 0000000000000000 12-18 14: 59: 02.800: I/DEBUG (85) : scr 20000010 12-18 14: 59: 02.860: I/DEBUG (85): # 00 पीसी 0000cd7c /system/lib/libc.so 12-18 14: 59: 02.860: I/DEBUG (85): # 01 पीसी 00002a04 /system/lib/libgsl.so 12-18 14: 59: 02.860: I/DEBUG (85): # 02 पीसी 00089de0 /system/lib/egl/libGLESv2_adreno200.so 12-18 14:59: 02.860: I/DEBUG (85): # 03 पीसी 00091a4a /system/lib/egl/libGLESv2_adreno200.so 12-18 14: 59: 02.860: I/DEBUG (85): # 04 पीसी 000612ca /system/lib/egl/libGLESv2_adreno200.so 12-18 14: 59: 02.860: I/DEBUG (85): # 05 पीसी 0006138a /system/lib/egl/libGLESv2_adreno200.so 12-18 14 : 5 9: 02.860: I/DEBUG (85): # 06 पीसी 00063d94 /system/lib/egl/libGLESv2_adreno200.so 12-18 14:59:02।860: I/DEBUG (85): # 07 पीसी 000836aa /system/lib/egl/libGLESv2_adreno200.so 12-18 14: 59: 02.860: I/DEBUG (85): # 08 पीसी 0003fd66/system/lib/libandroid_runtime .so 12-18 14: 59: 02.860: I/DEBUG (85): # 09 पीसी 00012174 /system/lib/libdvm.so 12-18 14: 59: 02.860: I/DEBUG (85): कोड पीसी: 12-18 14: 59: ०२.८६०: मैं/डिबग (85): afd0cd5c e0422003 e2522020 3a000008 e3c1c01f 12-18 14: 59: ०२.८६०: मैं/डिबग (85): afd0cd6c e28cc040 e8b10ff0 f5dcf040 e2522020 12-18 14: 59: ०२.८६०: मैं/डिबग (85): afd0cd7c 849c3020 e8a00ff0 2afffff9 e2822020 12-18 14: 59: ०२.८६०: मैं/डिबग (85): afd0cd8c e312001f 0a00000c e1b0ce02 28b100f0 12-18 14: 59: ०२.८६०: I/DEBUG (85): afd0cd9c 48b10300 28a000f0 48a00300 e1b0cf02 12-18 14: 59: 02.860: I/DEBUG (85): कोड ar ound एलआर: 12-18 14: 59: ०२.८६०: मैं/डिबग (85): 80e029e8 e5906008 e0831001 e1510006 8a000006 12-18 14: 59: ०२.८६०: मैं/डिबग (85): 80e029f8 e5903000 e1a0100e e0830005 eb000a13 12- 18 14: 59: ०२.८६०: मैं/डिबग (85): 80e02a08 e1a00004 e28dd008 e8bd8070 e59f104c 12-18 14: 59: ०२.८६०: मैं/डिबग (85): 80e02a18 e59fe04c e1a02005 e79c0001 e08f100e 12-18 14: 59: ०२.८६० : I/DEBUG (85): 80e02a28 e58d6000 e28000a8 ebfffef8 e3e00000 12-18 14: 59: 02.860: I/DEBUG (85): ढेर: 12-18 14: 59: 02.860: I/DEBUG (85): 443ef990 0000018c
12-18 14: 59: ०२.८६०: मैं/डिबग (85): 443ef994 811bd8b0
12-18 14: 59: ०२.८६०: मैं/डिबग (85): 443ef998 000000c6
12-18 14: 59: 02.860: I/DEBUG (85): 443ef99c 443efb68
12-18 14: 59: 02.860: I/DEBUG (85): 443ef9a0 4360beb4
12-18 14: 595 029160: मैं/डीबग (85): 443ef9a4 4360bea0
12-18 14: 59: ०२.८६०: मैं/डिबग (85): 443ef9a8 428da7b4
12-18 14: 59: ०२.८७०: मैं/डिबग (85): 443ef9ac 81089e25/प्रणाली/lib/EGL/libGLESv2_adreno200.so 12-18 14: 59: ०२.८७०: मैं/डिबग (85): 443ef9b0 001e8cc8
12-18 14: 59: ०२.८७०: मैं/डिबग (85): 443ef9b4 443efa6c
12-18 14: 59: 02.870: I/DEBUG (85): 443ef9b8 00000001
12-18 14: 59: 02.870: I/DEBUG (85): 443ef9bc 00000001
12-18 14: 59: 02.870: I/DEBUG (85): 443ef9c0 0000018c
12-18 14: 59: 02.870: I/DEBUG (85): 443ef9c4 afd10f08 /system/lib/libc.so 12- 18 14: 59: ०२.८७०: मैं/डिबग (85): 443ef9c8 df002777
12-18 14: 59: ०२.८७०: मैं/डिबग (85): 443ef9cc e3a070ad
12-18 14: 59: ०२.८७०: मैं/डिबग (85): # 00 443ef9d0 00000000
12-18 14: 59: ०२.८७०: मैं/डिबग (85): 443ef9d4 000a3000
12-18 14: 59: ०२.८७०: मैं/डिबग (85): 443ef9d8 0018b834
12-18 14: 59: 02.870: I/DEBUG (85): 443ef9dc 443efb68
12-18 14: 59: 02.870: I/DEBUG (85): 443ef9e0 4360beb4
12-18 14: 59: ०२.८७०: मैं/डिबग (85): 443ef9e4 4360bea0
12-18 14: 59: ०२.८७०: मैं/डिबग (85): 443ef9e8 428da7b4
12-18 14: 59: ०२.८७० : मैं/डिबग (85): 443ef9ec 44aac000
12-18 14: 59: ०२.८७०: मैं/डिबग (85): 443ef9f0 00000000
12-18 14: 59: ०२.८७०: मैं/डिबग (85): 443ef9f4 80e02a08 /system/lib/libgsl.so 12-18 14: 59: 02.870: I/DEBUG (85): # 01 443ef9f8 001e9320
12-18 14: 59: 02.870: I/DEBUG (85): 443ef9fc 00000001
12-18 14: 59: 02.870: I/DEBUG (85): 443efa00 001e9320
12-18 14:59:02।870: I/DEBUG (85): 443efa04 00000001
12-18 14: 59: 02.870: I/DEBUG (85): 443efa08 001e9328
12-18 14: 59: 02.870: I/DEBUG (85): 443efa0c 81089de3 /system/lib/egl/libGLESv2_adreno200.so
इसे पोस्ट करने के लिए धन्यवाद! मुझे भी VBOs.Dfenitly में समस्याएं हैं, यह मेरी मदद करने जा रहा है –