fix: Simple5——1未完成
This commit is contained in:
parent
738afcb259
commit
751a180677
@ -14,7 +14,7 @@
|
|||||||
android:theme="@style/Theme.MyOpenGLLearn"
|
android:theme="@style/Theme.MyOpenGLLearn"
|
||||||
tools:targetApi="31">
|
tools:targetApi="31">
|
||||||
<activity
|
<activity
|
||||||
android:name=".Sample3_1Activity"
|
android:name=".simple3.Sample3_1Activity"
|
||||||
android:exported="true">
|
android:exported="true">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
@ -11,17 +11,14 @@ import android.util.Log;
|
|||||||
public class ShaderUtil
|
public class ShaderUtil
|
||||||
{
|
{
|
||||||
//加载制定shader的方法
|
//加载制定shader的方法
|
||||||
public static int loadShader
|
public static int loadShader(
|
||||||
(
|
|
||||||
int shaderType, //shader的类型 GLES20.GL_VERTEX_SHADER(顶点) GLES20.GL_FRAGMENT_SHADER(片元)
|
int shaderType, //shader的类型 GLES20.GL_VERTEX_SHADER(顶点) GLES20.GL_FRAGMENT_SHADER(片元)
|
||||||
String source //shader的脚本字符串
|
String source //shader的脚本字符串
|
||||||
)
|
) {
|
||||||
{
|
|
||||||
//创建一个新shader
|
//创建一个新shader
|
||||||
int shader = GLES20.glCreateShader(shaderType);
|
int shader = GLES20.glCreateShader(shaderType);
|
||||||
//若创建成功则加载shader
|
//若创建成功则加载shader
|
||||||
if (shader != 0)
|
if (shader != 0) {
|
||||||
{
|
|
||||||
//加载shader的源代码
|
//加载shader的源代码
|
||||||
GLES20.glShaderSource(shader, source);
|
GLES20.glShaderSource(shader, source);
|
||||||
//编译shader
|
//编译shader
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
package com.navinfo.myopengllearn;
|
package com.navinfo.myopengllearn.simple3;
|
||||||
|
|
||||||
import javax.microedition.khronos.egl.EGLConfig;
|
import javax.microedition.khronos.egl.EGLConfig;
|
||||||
import javax.microedition.khronos.opengles.GL10;
|
import javax.microedition.khronos.opengles.GL10;
|
@ -1,4 +1,4 @@
|
|||||||
package com.navinfo.myopengllearn;
|
package com.navinfo.myopengllearn.simple3;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.pm.ActivityInfo;
|
import android.content.pm.ActivityInfo;
|
@ -1,4 +1,4 @@
|
|||||||
package com.navinfo.myopengllearn;
|
package com.navinfo.myopengllearn.simple3;
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.nio.ByteOrder;
|
import java.nio.ByteOrder;
|
||||||
@ -6,6 +6,8 @@ import java.nio.FloatBuffer;
|
|||||||
import android.opengl.GLES20;
|
import android.opengl.GLES20;
|
||||||
import android.opengl.Matrix;
|
import android.opengl.Matrix;
|
||||||
|
|
||||||
|
import com.navinfo.myopengllearn.ShaderUtil;
|
||||||
|
|
||||||
//三角形
|
//三角形
|
||||||
public class Triangle
|
public class Triangle
|
||||||
{
|
{
|
||||||
@ -51,8 +53,7 @@ public class Triangle
|
|||||||
mVertexBuffer.put(vertices);
|
mVertexBuffer.put(vertices);
|
||||||
mVertexBuffer.position(0);
|
mVertexBuffer.position(0);
|
||||||
|
|
||||||
float colors[]=new float[]
|
float colors[]=new float[] {
|
||||||
{
|
|
||||||
1,1,1,0,
|
1,1,1,0,
|
||||||
0,0,1,0,
|
0,0,1,0,
|
||||||
0,1,0,0,
|
0,1,0,0,
|
||||||
@ -69,7 +70,7 @@ public class Triangle
|
|||||||
public void initShader(MyTDView mv)
|
public void initShader(MyTDView mv)
|
||||||
{
|
{
|
||||||
//加载顶点着色器的脚本内容
|
//加载顶点着色器的脚本内容
|
||||||
mVertexShader=ShaderUtil.loadFromAssetsFile("vertex.glsl", mv.getResources());
|
mVertexShader= ShaderUtil.loadFromAssetsFile("vertex.glsl", mv.getResources());
|
||||||
//加载片元着色器的脚本内容
|
//加载片元着色器的脚本内容
|
||||||
mFragmentShader=ShaderUtil.loadFromAssetsFile("frag.glsl", mv.getResources());
|
mFragmentShader=ShaderUtil.loadFromAssetsFile("frag.glsl", mv.getResources());
|
||||||
//基于顶点着色器与片元着色器创建程序
|
//基于顶点着色器与片元着色器创建程序
|
@ -0,0 +1,41 @@
|
|||||||
|
package com.navinfo.myopengllearn.simple5;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.opengl.GLES20;
|
||||||
|
import android.opengl.GLSurfaceView;
|
||||||
|
|
||||||
|
import javax.microedition.khronos.egl.EGLConfig;
|
||||||
|
import javax.microedition.khronos.opengles.GL10;
|
||||||
|
|
||||||
|
public class MySurfaceView extends GLSurfaceView {
|
||||||
|
private SceneRenderer sceneRenderer;
|
||||||
|
|
||||||
|
public MySurfaceView(Context context) {
|
||||||
|
super(context);
|
||||||
|
|
||||||
|
sceneRenderer = new SceneRenderer();
|
||||||
|
this.setRenderer(sceneRenderer);
|
||||||
|
this.setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY);
|
||||||
|
}
|
||||||
|
|
||||||
|
private class SceneRenderer implements GLSurfaceView.Renderer {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSurfaceCreated(GL10 gl10, EGLConfig eglConfig) {
|
||||||
|
GLES20.glClearColor(0.5f, 0.5f, 0.5f, 1.0f);
|
||||||
|
// 初始化六角形数据
|
||||||
|
|
||||||
|
GLES20.glEnable(GLES20.GL_DEPTH_TEST); // 打开深度检测
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSurfaceChanged(GL10 gl10, int i, int i1) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDrawFrame(GL10 gl10) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,23 @@
|
|||||||
|
package com.navinfo.myopengllearn.simple5;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.os.Bundle;
|
||||||
|
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
|
public class Simple5_1Activity extends Activity {
|
||||||
|
@Override
|
||||||
|
protected void onCreate(@Nullable Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPause() {
|
||||||
|
super.onPause();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,56 @@
|
|||||||
|
package com.navinfo.myopengllearn.simple5;
|
||||||
|
|
||||||
|
import android.view.SurfaceView;
|
||||||
|
|
||||||
|
import java.nio.ByteBuffer;
|
||||||
|
import java.nio.ByteOrder;
|
||||||
|
import java.nio.FloatBuffer;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 六角形图形
|
||||||
|
* */
|
||||||
|
public class SixPointStar {
|
||||||
|
public SixPointStar(SurfaceView surfaceView, float r, float R, float centX, float centY, float centZ) {
|
||||||
|
initVtexData(r, R, centX, centY, centZ);
|
||||||
|
initShader();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化顶点数据
|
||||||
|
* */
|
||||||
|
private void initVtexData(float r, float R, float centX, float centY, float centZ) {
|
||||||
|
List<Double> pointList = new ArrayList<>();
|
||||||
|
float stepAngle = 60f;
|
||||||
|
// 中心点位置
|
||||||
|
pointList.add((double) centX);
|
||||||
|
pointList.add((double) centY);
|
||||||
|
pointList.add((double) centZ);
|
||||||
|
|
||||||
|
for (int i = 0; i < 6; i++) {
|
||||||
|
float currentAngle = stepAngle*i;
|
||||||
|
|
||||||
|
// 长边半径的点
|
||||||
|
pointList.add(R*Math.sin(Math.toRadians(currentAngle)));
|
||||||
|
pointList.add(R*Math.cos(Math.toRadians(currentAngle)));
|
||||||
|
pointList.add((double) centZ);
|
||||||
|
|
||||||
|
// 短边半径的点
|
||||||
|
pointList.add(r*Math.sin(Math.toRadians(currentAngle)));
|
||||||
|
pointList.add(r*Math.cos(Math.toRadians(currentAngle)));
|
||||||
|
pointList.add((double) centZ);
|
||||||
|
}
|
||||||
|
|
||||||
|
int pointSize = pointList.size()/3;
|
||||||
|
ByteBuffer vbb = ByteBuffer.allocateDirect(pointList.size()*4);
|
||||||
|
vbb.order(ByteOrder.nativeOrder());
|
||||||
|
FloatBuffer pointBuffer = vbb.asFloatBuffer();
|
||||||
|
float[] floatArray = new float[pointList.size()];
|
||||||
|
pointBuffer.put(pointList.toArray(floatArray));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void initShader() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -4,6 +4,6 @@
|
|||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
tools:context=".Sample3_1Activity">
|
tools:context=".simple3.Sample3_1Activity">
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
Loading…
x
Reference in New Issue
Block a user