Пример #1
0
 public void onDrawFrame(GL10 gl)
 {
     // define the color we want to be displayed as the "clipping wall"
     gl.glClearColor(_red, _green, _blue, 1.0f);
     // clear the color buffer to show the ClearColor we called above...
     gl.glClear(GL10_GL_COLOR_BUFFER_BIT);
 }
 public  void onDrawFrame(GL10 gl)
 {
     // define the color we want to be displayed as the "clipping wall"
     gl.glClearColor(_red, _green, _blue, 1.0f);
     // clear the color buffer to show the ClearColor we called above...
     gl.glClear(GL10_GL_COLOR_BUFFER_BIT);
 }
Пример #3
0
            public void onSurfaceCreated(GL10 gl, EGLConfig config)
            {
                gl.glMatrixMode(GL10_GL_PROJECTION);
                float size  = .01f * (float)java.lang.Math.tan(java.lang.Math.toRadians(45.0) / 2);
                float ratio = _width / _height;

                // perspective:
                gl.glFrustumf(-size, size, -size / ratio, size / ratio, 0.01f, 100.0f);
                // orthographic:
                //gl.glOrthof(-1, 1, -1 / ratio, 1 / ratio, 0.01f, 100.0f);
                gl.glViewport(0, 0, (int)_width, (int)_height);
                gl.glMatrixMode(GL10_GL_MODELVIEW);
                gl.glEnable(GL10_GL_DEPTH_TEST);

                // define the color we want to be displayed as the "clipping wall"
                gl.glClearColor(0f, 0f, 0f, 1.0f);

                // enable the differentiation of which side may be visible
                gl.glEnable(GL10_GL_CULL_FACE);
                // which is the front? the one which is drawn counter clockwise
                gl.glFrontFace(GL10_GL_CCW);
                // which one should NOT be drawn
                gl.glCullFace(GL10_GL_BACK);

                gl.glEnableClientState(GL10_GL_VERTEX_ARRAY);
                gl.glEnableClientState(GL10_GL_COLOR_ARRAY);

                initTriangle();
            }
Пример #4
0
            public override void onDrawFrame(GL10 gl)
            {
                mFrameLock.@lock();
                if (mCurrentFrame != null && !mVideoDisabled)
                {
                    GLES20.glUseProgram(mProgram);

                    if (mTextureWidth != mCurrentFrame.Width || mTextureHeight != mCurrentFrame.Height)
                    {
                        setupTextures(mCurrentFrame);
                    }
                    updateTextures(mCurrentFrame);

                    Matrix.setIdentityM(mScaleMatrix, 0);
                    float scaleX = 1.0f, scaleY = 1.0f;
                    float ratio  = (float)mCurrentFrame.Width / mCurrentFrame.Height;
                    float vratio = (float)mViewportWidth / mViewportHeight;

                    if (mVideoFitEnabled)
                    {
                        if (ratio > vratio)
                        {
                            scaleY = vratio / ratio;
                        }
                        else
                        {
                            scaleX = ratio / vratio;
                        }
                    }
                    else
                    {
                        if (ratio < vratio)
                        {
                            scaleY = vratio / ratio;
                        }
                        else
                        {
                            scaleX = ratio / vratio;
                        }
                    }

                    Matrix.scaleM(mScaleMatrix, 0, scaleX * (mCurrentFrame.MirroredX ? -1.0f : 1.0f), scaleY, 1);

                    int mMVPMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uMVPMatrix");
                    GLES20.glUniformMatrix4fv(mMVPMatrixHandle, 1, false, mScaleMatrix, 0);

                    GLES20.glDrawElements(GLES20.GL_TRIANGLES, mVertexIndex.Length, GLES20.GL_UNSIGNED_SHORT, mDrawListBuffer);
                }
                else
                {
                    //black frame when video is disabled
                    gl.glClearColor(0, 0, 0, 1);
                    GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
                }
                mFrameLock.unlock();
            }
Пример #5
0
        private void Sync(bool pollEvents)
        {
            double dt          = 1 / 60.0;
            double currentTime = GLFW.glfwGetTime();

            // Main loop
            while (GLFW.glfwWindowShouldClose(Handle) == 0)
            {
                double newTime   = GLFW.glfwGetTime();
                double frameTime = newTime - currentTime;
                currentTime = newTime;

                while (frameTime > 0)
                {
                    double deltaTime = Math.Min(frameTime, dt);
                    frameTime -= deltaTime;

                    for (var i = 0; i < blocks.Length; i++)
                    {
                        blocks[i].UseDelta = useDelta;
                        blocks[i].Update(deltaTime, width, height);
                    }
                }

                // Render a background and enable some stuff for 2d rendering with alpha
                GL10.glMatrixMode(GL11.GL_PROJECTION);
                GL10.glLoadIdentity();
                GL10.glOrtho(0, width, height, 0, -1, 1);
                GL10.glMatrixMode(GL11.GL_MODELVIEW);
                GL10.glLoadIdentity();

                GL10.glEnable(GL11.GL_BLEND);
                GL10.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
                GL10.glViewport(0, 0, Width, Height);
                GL10.glClearColor(0, 0, 0, 1);
                GL10.glClear(GL11.GL_COLOR_BUFFER_BIT);

                // Render
                for (var i = 0; i < blocks.Length; i++)
                {
                    blocks[i].Render();
                }

                GLFW.glfwSwapBuffers(Handle);
                GLFW.glfwPollEvents();
            }

            GLFW.glfwDestroyWindow(Handle);
        }
Пример #6
0
            public override void onSurfaceCreated(GL10 gl, EGLConfig config)
            {
                gl.glClearColor(0, 0, 0, 1);
                GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);

                int vertexShader   = loadShader(GLES20.GL_VERTEX_SHADER, vertexShaderCode);
                int fragmentShader = loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentShaderCode);

                mProgram = GLES20.glCreateProgram();                 // create empty OpenGL ES
                // Program
                GLES20.glAttachShader(mProgram, vertexShader);       // add the vertex
                // shader to program
                GLES20.glAttachShader(mProgram, fragmentShader);     // add the fragment
                // shader to
                // program
                GLES20.glLinkProgram(mProgram);

                int positionHandle = GLES20.glGetAttribLocation(mProgram, "aPosition");
                int textureHandle  = GLES20.glGetAttribLocation(mProgram, "aTextureCoord");

                GLES20.glVertexAttribPointer(positionHandle, COORDS_PER_VERTEX, GLES20.GL_FLOAT, false, COORDS_PER_VERTEX * 4, mVertexBuffer);

                GLES20.glEnableVertexAttribArray(positionHandle);

                GLES20.glVertexAttribPointer(textureHandle, TEXTURECOORDS_PER_VERTEX, GLES20.GL_FLOAT, false, TEXTURECOORDS_PER_VERTEX * 4, mTextureBuffer);

                GLES20.glEnableVertexAttribArray(textureHandle);

                GLES20.glUseProgram(mProgram);
                int i = GLES20.glGetUniformLocation(mProgram, "Ytex");

                GLES20.glUniform1i(i, 0);                 // Bind Ytex to texture unit 0

                i = GLES20.glGetUniformLocation(mProgram, "Utex");
                GLES20.glUniform1i(i, 1);                 // Bind Utex to texture unit 1

                i = GLES20.glGetUniformLocation(mProgram, "Vtex");
                GLES20.glUniform1i(i, 2);                 // Bind Vtex to texture unit 2

                mTextureWidth  = 0;
                mTextureHeight = 0;
            }
Пример #7
0
            public void onDrawFrame(GL10 gl)
            {
                // define the color we want to be displayed as the "clipping wall"
                gl.glClearColor(0f, 0f, 0f, 1.0f);

                // reset the matrix - good to fix the rotation to a static angle
                gl.glLoadIdentity();

                // clear the color buffer to show the ClearColor we called above...
                gl.glClear(GL10_GL_COLOR_BUFFER_BIT);

                // set rotation
                gl.glRotatef(_xAngle, 1f, 0f, 0f);
                gl.glRotatef(_yAngle, 0f, 1f, 0f);

                //gl.glColor4f(0.5f, 0f, 0f, 0.5f);
                gl.glVertexPointer(3, GL10_GL_FLOAT, 0, _vertexBuffer);
                gl.glColorPointer(4, GL10_GL_FLOAT, 0, _colorBuffer);
                gl.glDrawElements(GL10_GL_TRIANGLES, _nrOfVertices, GL10_GL_UNSIGNED_SHORT, _indexBuffer);
            }
			public override void onSurfaceCreated(GL10 gl, EGLConfig config)
			{
				gl.glClearColor(0, 0, 0, 1);
				GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);

				int vertexShader = loadShader(GLES20.GL_VERTEX_SHADER, vertexShaderCode);
				int fragmentShader = loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentShaderCode);

				mProgram = GLES20.glCreateProgram(); // create empty OpenGL ES
				// Program
				GLES20.glAttachShader(mProgram, vertexShader); // add the vertex
				// shader to program
				GLES20.glAttachShader(mProgram, fragmentShader); // add the fragment
				// shader to
				// program
				GLES20.glLinkProgram(mProgram);

				int positionHandle = GLES20.glGetAttribLocation(mProgram, "aPosition");
				int textureHandle = GLES20.glGetAttribLocation(mProgram, "aTextureCoord");

				GLES20.glVertexAttribPointer(positionHandle, COORDS_PER_VERTEX, GLES20.GL_FLOAT, false, COORDS_PER_VERTEX * 4, mVertexBuffer);

				GLES20.glEnableVertexAttribArray(positionHandle);

				GLES20.glVertexAttribPointer(textureHandle, TEXTURECOORDS_PER_VERTEX, GLES20.GL_FLOAT, false, TEXTURECOORDS_PER_VERTEX * 4, mTextureBuffer);

				GLES20.glEnableVertexAttribArray(textureHandle);

				GLES20.glUseProgram(mProgram);
				int i = GLES20.glGetUniformLocation(mProgram, "Ytex");
				GLES20.glUniform1i(i, 0); // Bind Ytex to texture unit 0

				i = GLES20.glGetUniformLocation(mProgram, "Utex");
				GLES20.glUniform1i(i, 1); // Bind Utex to texture unit 1

				i = GLES20.glGetUniformLocation(mProgram, "Vtex");
				GLES20.glUniform1i(i, 2); // Bind Vtex to texture unit 2

				mTextureWidth = 0;
				mTextureHeight = 0;
			}
Пример #9
0
            public void onDrawFrame(GL10 gl)
            {
                // define the color we want to be displayed as the "clipping wall"
                gl.glClearColor(_red, _green, _blue, 1.0f);

                // clear the color buffer to show the ClearColor we called above...
                gl.glClear(GL10_GL_COLOR_BUFFER_BIT);


                // set rotation
                gl.glRotatef(_angle, 0f, 1f, 0f);


                // set the color of our element
                gl.glColor4f(0.5f, 0f, 0f, 0.5f);

                // define the vertices we want to draw
                gl.glVertexPointer(3, GL10_GL_FLOAT, 0, _vertexBuffer);

                // finally draw the vertices
                gl.glDrawElements(GL10_GL_TRIANGLES, _nrOfVertices, GL10_GL_UNSIGNED_SHORT, _indexBuffer);
            }
Пример #10
0
        private void Sync(bool pollEvents)
        {
            // Main loop
            while (GLFW.glfwWindowShouldClose(Handle) == 0)
            {
                // Update

                // Render a background and enable some stuff for 2d rendering with alpha
                GL10.glEnable(GL11.GL_BLEND);
                GL10.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
                GL10.glViewport(0, 0, Width, Height);
                GL10.glClearColor(0, 0, 0, 1);
                GL10.glClear(GL11.GL_COLOR_BUFFER_BIT);

                // Render

                GLFW.glfwSwapBuffers(Handle);
                GLFW.glfwPollEvents();
            }

            GLFW.glfwDestroyWindow(Handle);
        }
            public void onDrawFrame(GL10 gl)
            {
                // define the color we want to be displayed as the "clipping wall"
                gl.glClearColor(_red, _green, _blue, 1.0f);

                // reset the matrix - good to fix the rotation to a static angle
                gl.glLoadIdentity();

                // clear the color buffer to show the ClearColor we called above...
                gl.glClear(GL10_GL_COLOR_BUFFER_BIT);

                // set rotation for the non-static triangle
                gl.glRotatef(_angle, 0f, 1f, 0f);

                gl.glColor4f(0.5f, 0f, 0f, 0.5f);
                gl.glVertexPointer(3, GL10_GL_FLOAT, 0, _vertexBuffer);
                gl.glDrawElements(GL10_GL_TRIANGLES, _nrOfVertices, GL10_GL_UNSIGNED_SHORT, _indexBuffer);

                // gl.glColor4f(0.5f, 0f, 0f, 0.5f);
                gl.glVertexPointer(3, GL10_GL_FLOAT, 0, _vertexBuffer);
                gl.glColorPointer(4, GL10_GL_FLOAT, 0, _colorBuffer);
                gl.glDrawElements(GL10_GL_TRIANGLES, _nrOfVertices, GL10_GL_UNSIGNED_SHORT, _indexBuffer);
            }
            public void onSurfaceCreated(GL10 gl, EGLConfig config)
            {
                gl.glMatrixMode(GL10_GL_PROJECTION);
                float size = .01f * (float)java.lang.Math.tan(java.lang.Math.toRadians(45.0) / 2);
                float ratio = _width / _height;
                // perspective:
                gl.glFrustumf(-size, size, -size / ratio, size / ratio, 0.01f, 100.0f);
                // orthographic:
                //gl.glOrthof(-1, 1, -1 / ratio, 1 / ratio, 0.01f, 100.0f);
                gl.glViewport(0, 0, (int)_width, (int)_height);
                gl.glMatrixMode(GL10_GL_MODELVIEW);
                gl.glEnable(GL10_GL_DEPTH_TEST);

                // define the color we want to be displayed as the "clipping wall"
                gl.glClearColor(0f, 0f, 0f, 1.0f);

                // enable the differentiation of which side may be visible 
                gl.glEnable(GL10_GL_CULL_FACE);
                // which is the front? the one which is drawn counter clockwise
                gl.glFrontFace(GL10_GL_CCW);
                // which one should NOT be drawn
                gl.glCullFace(GL10_GL_BACK);

                gl.glEnableClientState(GL10_GL_VERTEX_ARRAY);
                gl.glEnableClientState(GL10_GL_COLOR_ARRAY);

                initTriangle();
            }
            public void onDrawFrame(GL10 gl)
            {
                // define the color we want to be displayed as the "clipping wall"
                gl.glClearColor(_red, _green, _blue, 1.0f);

                // clear the color buffer to show the ClearColor we called above...
                gl.glClear(GL10_GL_COLOR_BUFFER_BIT);


                // set rotation
                gl.glRotatef(_angle, 0f, 1f, 0f);


                // set the color of our element
                gl.glColor4f(0.5f, 0f, 0f, 0.5f);

                // define the vertices we want to draw
                gl.glVertexPointer(3, GL10_GL_FLOAT, 0, _vertexBuffer);

                // finally draw the vertices
                gl.glDrawElements(GL10_GL_TRIANGLES, _nrOfVertices, GL10_GL_UNSIGNED_SHORT, _indexBuffer);
            }
			public override void onDrawFrame(GL10 gl)
			{
				mFrameLock.@lock();
				if (mCurrentFrame != null && !mVideoDisabled)
				{
					GLES20.glUseProgram(mProgram);

					if (mTextureWidth != mCurrentFrame.Width || mTextureHeight != mCurrentFrame.Height)
					{
						setupTextures(mCurrentFrame);
					}
					updateTextures(mCurrentFrame);

					Matrix.setIdentityM(mScaleMatrix, 0);
					float scaleX = 1.0f, scaleY = 1.0f;
					float ratio = (float) mCurrentFrame.Width / mCurrentFrame.Height;
					float vratio = (float) mViewportWidth / mViewportHeight;

					if (mVideoFitEnabled)
					{
						if (ratio > vratio)
						{
							scaleY = vratio / ratio;
						}
						else
						{
							scaleX = ratio / vratio;
						}
					}
					else
					{
						if (ratio < vratio)
						{
							scaleY = vratio / ratio;
						}
						else
						{
							scaleX = ratio / vratio;
						}
					}

					Matrix.scaleM(mScaleMatrix, 0, scaleX * (mCurrentFrame.MirroredX ? - 1.0f : 1.0f), scaleY, 1);

					int mMVPMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uMVPMatrix");
					GLES20.glUniformMatrix4fv(mMVPMatrixHandle, 1, false, mScaleMatrix, 0);

					GLES20.glDrawElements(GLES20.GL_TRIANGLES, mVertexIndex.Length, GLES20.GL_UNSIGNED_SHORT, mDrawListBuffer);
				}
				else
				{
					//black frame when video is disabled
					gl.glClearColor(0, 0, 0, 1);
					GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
				}
				mFrameLock.unlock();
			}
 public virtual void onDrawFrame(GL10 gl)
 {
     gl.glClearColor((float)0.5, (float)0.5, (float)0.5, (float)1.0);
     gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
 }
			public virtual void onDrawFrame(GL10 gl)
			{
				gl.glClearColor((float) 0.5, (float) 0.5, (float) 0.5, (float) 1.0);
				gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
			}