Revision 64a642c1
Added by Leszek Koltunski almost 9 years ago
| src/main/java/org/distorted/library/DistortedFramebuffer.java | ||
|---|---|---|
| 80 | 80 |
|
| 81 | 81 |
private boolean createFBO() |
| 82 | 82 |
{
|
| 83 |
int[] textureIds = new int[1]; |
|
| 84 |
GLES20.glGenTextures(1, textureIds, 0); |
|
| 85 |
mTextureID = textureIds[0]; |
|
| 86 |
int[] mFBORenderToTexture = new int[1]; |
|
| 83 |
int[] texIds = new int[1]; |
|
| 84 |
int[] fboIds = new int[1]; |
|
| 85 |
|
|
| 86 |
GLES20.glGenTextures(1, texIds, 0); |
|
| 87 |
mTextureID = texIds[0]; |
|
| 87 | 88 |
|
| 88 | 89 |
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mTextureID); |
| 89 | 90 |
GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST); |
| ... | ... | |
| 92 | 93 |
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_REPEAT); |
| 93 | 94 |
GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA, mWidth, mHeight, 0, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, null); |
| 94 | 95 |
|
| 95 |
GLES20.glGenFramebuffers(1, mFBORenderToTexture, 0);
|
|
| 96 |
GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, mFBORenderToTexture[0]);
|
|
| 96 |
GLES20.glGenFramebuffers(1, fboIds, 0);
|
|
| 97 |
GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, fboIds[0]);
|
|
| 97 | 98 |
GLES20.glFramebufferTexture2D(GLES20.GL_FRAMEBUFFER, GLES20.GL_COLOR_ATTACHMENT0, GLES20.GL_TEXTURE_2D, mTextureID, 0); |
| 98 | 99 |
int status = GLES20.glCheckFramebufferStatus(GLES20.GL_FRAMEBUFFER); |
| 99 | 100 |
|
| 100 | 101 |
if(status != GLES20.GL_FRAMEBUFFER_COMPLETE) |
| 101 | 102 |
{
|
| 102 |
android.util.Log.e("RenderTarget", "failed to create framebuffer, error="+status);
|
|
| 103 |
android.util.Log.e("DistortedFramebuffer", "failed to create framebuffer, error="+status);
|
|
| 103 | 104 |
|
| 104 |
GLES20.glDeleteTextures(1, textureIds, 0);
|
|
| 105 |
GLES20.glDeleteFramebuffers(1, mFBORenderToTexture, 0);
|
|
| 105 |
GLES20.glDeleteTextures(1, texIds, 0); |
|
| 106 |
GLES20.glDeleteFramebuffers(1, fboIds, 0);
|
|
| 106 | 107 |
mFramebufferID = 0; |
| 107 | 108 |
mTextureID = TEXTURE_FAILED_TO_CREATE; |
| 108 | 109 |
return false; |
| 109 | 110 |
} |
| 110 | 111 |
|
| 111 |
mFramebufferID = mFBORenderToTexture[0];
|
|
| 112 |
mFramebufferID = fboIds[0];
|
|
| 112 | 113 |
|
| 113 | 114 |
android.util.Log.e("FBO", "creating ("+mWidth+","+mHeight+") "+mFramebufferID);
|
| 114 | 115 |
|
| ... | ... | |
| 122 | 123 |
{
|
| 123 | 124 |
android.util.Log.e("FBO", "deleting ("+mWidth+","+mHeight+") "+mFramebufferID);
|
| 124 | 125 |
|
| 125 |
int[] textureIds = new int[1];
|
|
| 126 |
int[] mFBORenderToTexture = new int[1];
|
|
| 126 |
int[] texIds = new int[1]; |
|
| 127 |
int[] fboIds = new int[1];
|
|
| 127 | 128 |
|
| 128 |
textureIds[0] = mTextureID;
|
|
| 129 |
mFBORenderToTexture[0] = mFramebufferID;
|
|
| 129 |
texIds[0] = mTextureID; |
|
| 130 |
fboIds[0] = mFramebufferID;
|
|
| 130 | 131 |
|
| 131 |
GLES20.glDeleteTextures(1, textureIds, 0);
|
|
| 132 |
GLES20.glDeleteFramebuffers(1, mFBORenderToTexture, 0);
|
|
| 132 |
GLES20.glDeleteTextures(1, texIds, 0); |
|
| 133 |
GLES20.glDeleteFramebuffers(1, fboIds, 0);
|
|
| 133 | 134 |
|
| 134 | 135 |
mFramebufferID = 0; |
| 135 | 136 |
mTextureID = TEXTURE_NOT_CREATED_YET; |
Also available in: Unified diff
Cleanup