Java 将GLSURFACHEVIEW设置为在有限的空间中显示
我在Android Studio和OpenGL ES上工作。 我成功地制作了一个三角形,但我不知道如何在有限的空间内显示它(即300dp x 300dp)Java 将GLSURFACHEVIEW设置为在有限的空间中显示,java,android,android-studio,opengl-es,Java,Android,Android Studio,Opengl Es,我在Android Studio和OpenGL ES上工作。 我成功地制作了一个三角形,但我不知道如何在有限的空间内显示它(即300dp x 300dp) 我认为setContentView(R.activity.something);在活动中设置GLSURFACHEVIEW(布局大小:300dp x 300dp)应该可以,但不知道如何操作。您可以使用SURFACHEVIEW创建布局,例如activity\u gl.xml: <?xml version="1.0" encoding="ut
我认为setContentView(R.activity.something);在活动中设置GLSURFACHEVIEW(布局大小:300dp x 300dp)应该可以,但不知道如何操作。您可以使用SURFACHEVIEW创建布局,例如activity\u gl.xml:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
tools:context=".activities.OpenGLActivity">
<com.app.LimitedSurfaceView
android:id="@+id/oglView"
android:layout_width="300dp"
android:layout_height="300dp"/>
<!-- other elements -->
</androidx.constraintlayout.widget.ConstraintLayout>
然后在OpenGLActivity类中初始化limitedSurfaceView:
package com.app.activities
public class OpenGLActivity extends AppCompatActivity {
private LimitedSurfaceView limitedSurfaceView;
@Override
protected void onCreate(Bundle state) {
super.onCreate(state);
setContentView(R.layout.activity_gl);
limitedSurfaceView = findViewById(R.id.oglView);
limitedSurfaceView.init(this.getApplicationContext());
...
}
}
结果:
package com.app;
public class LimitedSurfaceView extends GLSurfaceView {
private SceneRenderer renderer;
public LimitedSurfaceView(Context context) {
super(context);
}
public LimitedSurfaceView(Context context, AttributeSet attributes) {
super(context, attributes);
}
public void init(Context context) {
setPreserveEGLContextOnPause(true);
setEGLContextClientVersion(2); // or setEGLContextClientVersion(3)
renderer = new SceneRenderer(context);
setRenderer(renderer);
setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
...
}
}
package com.app.activities
public class OpenGLActivity extends AppCompatActivity {
private LimitedSurfaceView limitedSurfaceView;
@Override
protected void onCreate(Bundle state) {
super.onCreate(state);
setContentView(R.layout.activity_gl);
limitedSurfaceView = findViewById(R.id.oglView);
limitedSurfaceView.init(this.getApplicationContext());
...
}
}