Add method to compile program from shader paths in GlUtil
This method will be useful for adding Open GL to the Transformer. PiperOrigin-RevId: 394420744
This commit is contained in:
parent
68eff51d96
commit
373db56a52
@ -28,9 +28,7 @@ import androidx.annotation.Nullable;
|
|||||||
import com.google.android.exoplayer2.C;
|
import com.google.android.exoplayer2.C;
|
||||||
import com.google.android.exoplayer2.util.Assertions;
|
import com.google.android.exoplayer2.util.Assertions;
|
||||||
import com.google.android.exoplayer2.util.GlUtil;
|
import com.google.android.exoplayer2.util.GlUtil;
|
||||||
import com.google.android.exoplayer2.util.Util;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import javax.microedition.khronos.opengles.GL10;
|
import javax.microedition.khronos.opengles.GL10;
|
||||||
|
|
||||||
@ -79,10 +77,15 @@ import javax.microedition.khronos.opengles.GL10;
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void initialize() {
|
public void initialize() {
|
||||||
String vertexShaderCode =
|
String vertexShaderCode;
|
||||||
loadAssetAsString(context, "bitmap_overlay_video_processor_vertex.glsl");
|
String fragmentShaderCode;
|
||||||
String fragmentShaderCode =
|
try {
|
||||||
loadAssetAsString(context, "bitmap_overlay_video_processor_fragment.glsl");
|
vertexShaderCode = GlUtil.loadAsset(context, "bitmap_overlay_video_processor_vertex.glsl");
|
||||||
|
fragmentShaderCode =
|
||||||
|
GlUtil.loadAsset(context, "bitmap_overlay_video_processor_fragment.glsl");
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new IllegalStateException(e);
|
||||||
|
}
|
||||||
program = GlUtil.compileProgram(vertexShaderCode, fragmentShaderCode);
|
program = GlUtil.compileProgram(vertexShaderCode, fragmentShaderCode);
|
||||||
GlUtil.Attribute[] attributes = GlUtil.getAttributes(program);
|
GlUtil.Attribute[] attributes = GlUtil.getAttributes(program);
|
||||||
GlUtil.Uniform[] uniforms = GlUtil.getUniforms(program);
|
GlUtil.Uniform[] uniforms = GlUtil.getUniforms(program);
|
||||||
@ -156,16 +159,4 @@ import javax.microedition.khronos.opengles.GL10;
|
|||||||
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, /* first= */ 0, /* count= */ 4);
|
GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, /* first= */ 0, /* count= */ 4);
|
||||||
GlUtil.checkGlError();
|
GlUtil.checkGlError();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String loadAssetAsString(Context context, String assetFileName) {
|
|
||||||
@Nullable InputStream inputStream = null;
|
|
||||||
try {
|
|
||||||
inputStream = context.getAssets().open(assetFileName);
|
|
||||||
return Util.fromUtf8Bytes(Util.toByteArray(inputStream));
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new IllegalStateException(e);
|
|
||||||
} finally {
|
|
||||||
Util.closeQuietly(inputStream);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -31,6 +31,8 @@ import androidx.annotation.DoNotInline;
|
|||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.annotation.RequiresApi;
|
import androidx.annotation.RequiresApi;
|
||||||
import com.google.android.exoplayer2.C;
|
import com.google.android.exoplayer2.C;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
import java.nio.Buffer;
|
import java.nio.Buffer;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.nio.ByteOrder;
|
import java.nio.ByteOrder;
|
||||||
@ -435,6 +437,24 @@ public final class GlUtil {
|
|||||||
return byteBuffer.order(ByteOrder.nativeOrder()).asFloatBuffer();
|
return byteBuffer.order(ByteOrder.nativeOrder()).asFloatBuffer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads a file from the assets folder.
|
||||||
|
*
|
||||||
|
* @param context The {@link Context}.
|
||||||
|
* @param assetPath The path to the file to load, from the assets folder.
|
||||||
|
* @return The content of the file to load.
|
||||||
|
* @throws IOException If the file couldn't be read.
|
||||||
|
*/
|
||||||
|
public static String loadAsset(Context context, String assetPath) throws IOException {
|
||||||
|
@Nullable InputStream inputStream = null;
|
||||||
|
try {
|
||||||
|
inputStream = context.getAssets().open(assetPath);
|
||||||
|
return Util.fromUtf8Bytes(Util.toByteArray(inputStream));
|
||||||
|
} finally {
|
||||||
|
Util.closeQuietly(inputStream);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a GL_TEXTURE_EXTERNAL_OES with default configuration of GL_LINEAR filtering and
|
* Creates a GL_TEXTURE_EXTERNAL_OES with default configuration of GL_LINEAR filtering and
|
||||||
* GL_CLAMP_TO_EDGE wrapping.
|
* GL_CLAMP_TO_EDGE wrapping.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user