opengl es api sans contexte actuel
J'ai regardé à travers les solutions et n'ai pas vraiment trouvé. J'obtiens cette erreur car il semble que l'exécution se passe en dehors de la gl fil. Cependant, je ne suis pas sûr de la façon de résoudre ce problème. Le code est comme suit:
public shape()
{
super();
vertexShader = Shader.loadShader(GLES20.GL_VERTEX_SHADER, vertexShaderCode); //<============
fragmentShader = Shader.loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentShaderCode);
ByteBuffer buffer = ByteBuffer.allocateDirect(getCoordinates().length * 4);
buffer.order(ByteOrder.nativeOrder());
vertexBuffer = buffer.asFloatBuffer();
vertexBuffer.put(getCoordinates());
vertexBuffer.position(0);
ByteBuffer drawListBuffer = ByteBuffer.allocateDirect(getOrderOfDraw().length * 2);
drawListBuffer.order(ByteOrder.nativeOrder());
listBuffer = drawListBuffer.asShortBuffer();
listBuffer.put(getOrderOfDraw());
listBuffer.position(0);
mProgram = GLES20.glCreateProgram(); //create empty OpenGL Program
GLES20.glAttachShader(mProgram, vertexShader); //add the vertex shader to program
GLES20.glAttachShader(mProgram, fragmentShader); //add the fragment shader to program
GLES20.glLinkProgram(mProgram);
}
et de l'appel rendu est
Square square = new Square(5, 5);
public void onDrawFrame(GL10 unused)
{
unused.glLoadIdentity();
unused.glClear(GLES20.GL_COLOR_BUFFER_BIT);
square.Draw();
}
Carré s'étend à partir de la forme
OriginalL'auteur Serguei Fedorov | 2012-07-02
Vous devez vous connecter pour publier un commentaire.
Si
new Square(5,5);
ne fait pas partie du tout de l'opengl rappels (je suppose que vous êtes à l'aide d'un glSurfaceView), alors je ne pense pas qu'il s'exécute sur l'OpenGL fil. Il sera exécuté lorsque votre glSurfaceView est créé, qui, je crois, est le principal android fil.Essayez de déplacer
new Square(5,5);
à l'intérieur deonSurfaceCreated
.Quelle ligne de votre code est de donner le message? @user1260028
OriginalL'auteur Tim