2012-07-01 32 views
5

Tôi đang gặp sự cố khi đối tượng trình kết xuất dường như không nhận được số gọi là . Trình gỡ lỗi không bao giờ chạm vào điểm ngắt bên trong hàm. Vì vậy, hình vuông của tôi không vẽ. Dưới đây là đoạn code, cho tôi biết nếu bạn cần bất cứ điều gì khác:onDrawFrame không được gọi trên Android

public class renderer implements GLSurfaceView.Renderer { 

Square square; 

public void onDrawFrame(GL10 unused) { 
    GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT); 
    square.Draw(); 
} 

public void onSurfaceChanged(GL10 gl, int width, int height) { 
    GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT); 
} 

public void onSurfaceCreated(GL10 unused, int width, int height) { 
    GLES20.glViewport(0, 0, width, height); 

} 

public void onSurfaceCreated(GL10 gl, EGLConfig config) { 
    square = new Square(5, 5); 

} 

Các hoạt động chính là:

public class gameActivity extends Activity { 
/** Called when the activity is first created. */ 

private GLSurfaceView mGLView; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    staticHolder.context = getApplicationContext(); 
    mGLView = new GLSurface(this); 
    setContentView(mGLView); 
} 
@Override 
protected void onPause() { 
    super.onPause(); 
    // The following call pauses the rendering thread. 
    // If your OpenGL application is memory intensive, 
    // you should consider de-allocating objects that 
    // consume significant memory here. 
    mGLView.onPause(); 
} 

@Override 
protected void onResume() { 
    mGLView.onResume(); 
} 


class GLSurface extends GLSurfaceView 
{ 
    renderer r = new renderer(); 
    public GLSurface(Context context) 

    { 
     super(context); 

     setEGLContextClientVersion(2); 
     setRenderer(r); 
     setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY); 
    } 
} 

}

Hiện nay màn hình chỉ là màu đen. Có ý tưởng nào về lý do tại sao OpenGL không hiển thị đúng không?

+0

Các điểm ngắt khác trong chương trình của bạn có hoạt động không? Nếu bạn thêm 'glClearColor (1,0,1,1)' vào dòng đầu tiên của onDrawFrame, nó vẫn còn đen? Có bất kỳ callback renderer nào khác không? – Tim

+0

GLES20.glClearColor (1, 0, 1, 1) ;, không làm bất cứ điều gì –

+0

Các cuộc gọi lại của trình kết xuất khác có được gọi không? onSurfaceCreated or onSurfaceChanged? – Tim

Trả lời

3

Ok, điều này thực sự ngu ngốc nhưng không có vấn đề gì để bắt đầu. Vấn đề là Eclipse/Java không quan tâm đến sự mơ hồ như C# và các ngôn ngữ khác làm (sửa chữa cho tôi nếu sai lầm sai). Vấn đề là tôi quản lý để lặp lại cùng một lớp học ở các địa điểm khác nhau, với một cập nhật và khác không. Kết quả cuối cùng là nó đã lấy cái đầu tiên mà nó có thể tìm thấy.

Bài học kinh nghiệm, tự mình tìm kiếm sự mơ hồ vì trình biên dịch/trình phân tích cú pháp sẽ không cho bạn biết!

Các vấn đề liên quan