Android 4.3 рдореЗрдВ OpenGL ES 3.0 - ETC2 рдмрдирд╛рд╡рдЯ рд╕рдВрдкреАрдбрд╝рди

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдПрдВрдбреНрд░реЙрдЗрдб рдХрд╛ рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг - 4.3ред рдЕрдкрдиреА рд░рд┐рд▓реАрдЬрд╝ рд╕реЗ рдмрд╣реБрдд рдкрд╣рд▓реЗ, рдЧреИрд▓реЗрдХреНрд╕реА рдПрд╕ 4 рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд▓реАрдХ рд╣реБрдП рдереЗ, рдФрд░ рдлрд┐рд░ рдиреЗрдХреНрд╕рд╕ 4 рдХреЗ рд▓рд┐рдПред рдЗрди рдлрд╝рд░реНрдорд╡рд╛рд░реЛрдВ рдореЗрдВ, рдореБрдЭреЗ рддреБрд░рдВрдд рдУрдкрдирдЬреАрдПрд╕ рдИрдПрд╕ 3.0 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдорд┐рд▓реА, рдЬреЛ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рдордирднрд╛рд╡рди рдереА - рдЕрдлрд╡рд╛рд╣реЗрдВ рдереАрдВ рдХрд┐ рдУрдкрдирдЧреНрд▓ рдИрдПрд╕ 3.0 рдХреЗ рдбреЗрдореЛ рдиреЗ рдорд╛рд░реНрдЪ рдореЗрдВ рд╡рд╛рдкрд╕ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ред рдПрдЪрдЯреАрд╕реА рд╡рди рдкрд░ рд╡реЗ рджреЗрд╢реА рдПрдВрдбреНрд░реЙрдЗрдб рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдкреБрд╖реНрдЯрд┐ рдХреА рдЧрдИ (рд╕рд╛рде рд╣реА рдмреНрд▓реВрдЯреВрде рдХрдо рдКрд░реНрдЬрд╛ рд╕рдорд░реНрдерди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдлрд╡рд╛рд╣реЗрдВ)ред

рдФрд░ рд╢реБрдХреНрд░рд╡рд╛рд░ рдХреА рд░рд╛рдд, рдУрдЯреАрдП рдЕрдкрдбреЗрдЯ рд╣рдорд╛рд░реЗ рджреЛ рдЙрдкрдХрд░рдгреЛрдВ - рдиреЗрдХреНрд╕рд╕ 4 рдФрд░ рдиреЗрдХреНрд╕рд╕ 10 рдкрд░ рдЖрдпрд╛ред рдиреЗрдХреНрд╕рд╕ 7 рдиреЗ 4.3 рдкрд░ рдЕрднреА рддрдХ рдЕрдкрдбреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдХреНрдпреЛрдВ - рдореИрдВ рдмрд╛рдж рдореЗрдВ рд╕рдордЭрд╛рдКрдВрдЧрд╛)ред рдмреЗрд╢рдХ, рд╣рд╛рдереЛрдВ рдиреЗ рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдХрдВрдШреА рдХреАред



рдкрд░рд┐рдЪрдп - OpenGL ES 3.0 рдореЗрдВ рдирдпрд╛ рдХреНрдпрд╛ рд╣реИ


OpenGL ES 3.0 рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдХрдИ рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВрдиреЗ рд╕реВрдЪреАрдмрджреНрдз рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдЖрдк рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдпрд╣рд╛рдВ рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рд╕реАрдЦ рд╕рдХрддреЗ рд╣реИрдВ: www.khronos.org/opengles/3_X
рдФрд░ рдпрд╣рд╛рдВ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкреНрд░реЗрд╕ рд╡рд┐рдЬреНрдЮрдкреНрддрд┐ рдореЗрдВ: www.khronos.org/news/press/khronos-releases-opengl-es-3.0-specification
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо OpenGL ES 3.0 рдХреЗ рд╕рд░рд▓рддрдо рдФрд░ рд╕рдмрд╕реЗ рддреЗрдЬрд╝ рдЙрдкрдпреЛрдЧ рдлреАрдЪрд░ рдХреЛ рд╕реНрдкрд░реНрд╢ рдХрд░реЗрдВрдЧреЗ - рдмрдирд╛рд╡рдЯ ETC2 рдХреЛ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдирдпрд╛ рдорд╛рдирдХ рдкреНрд░рд╛рд░реВрдкред

ETC2


ETC2 рд╕рдВрдкреАрдбрд╝рди рдкреНрд░рд╛рд░реВрдк ETC1 рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдЗрд╕рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рд╕рд┐рджреНрдзрд╛рдВрдд ETC1 рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рдмрд┐рдЯ рдЕрдиреБрдХреНрд░рдореЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдИрдЯреАрд╕реА 1 рдХреЛ рдИрдЯреАрд╕реА 2 рддрдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЖрдк рдХреИрд╕реЗ рдХрд╛рдордпрд╛рдм рд╣реБрдП, рдЗрд╕рдХреА рдкреНрд░рддрд┐рднрд╛ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрди рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ рдкрдврд╝рдирд╛ рдЪрд╛рд╣рд┐рдП:
рд╕рдВрдкреАрдбрд╝рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╡рд┐рд╡рд░рдг: www.jacobstrom.com/publications/StromPetterssonGH07.pdf
рдФрд░ ETC2 рдкреНрд░рд╛рд░реВрдк рдХрд╛ рд╡рд┐рд╡рд░рдг: www.graphicshardware.org/prepret/www_2007/pretations/strom-etc2-gh07.pdf

ETC2, ETC1 рдХреА рддрд░рд╣, 4x4 рдкрд┐рдХреНрд╕реЗрд▓ рдмреНрд▓реЙрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЙрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрдкреАрдбрд╝рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИ - рдирд┐рдпрдорд┐рдд ETC1 рдпрд╛ рддреАрди рдЕрддрд┐рд░рд┐рдХреНрдд рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдореЗрдВ рд╕реЗ рдПрдХред

рдирддреАрдЬрддрди, рдИрдЯреАрд╕реА 2 рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рдВрддреБрд▓рд┐рдд рд╕рдВрдкреАрдбрд╝рди рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдирд┐рдХрд▓рд╛, рдЬреЛ рджреЛрдиреЛрдВ рдХреЛ рдХреБрдЫ рдмреНрд▓реЙрдХреЛрдВ рдореЗрдВ рд╕реАрдорд╛рдУрдВ рдХреЗ рддреЗрдЬ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реЛрдВ рдореЗрдВ рдЪрд┐рдХрдиреА рдЧреНрд░реЗрдбрд┐рдПрдВрдЯреНрд╕ рдХреЛ рд╡рд┐рдХреГрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:



OpenGL ES 3.0 рдХреА рд╢реБрд░реБрдЖрдд


рдПрдВрдбреНрд░реЙрдЗрдб 4.3 рдореЗрдВ рдУрдкрдирдЬреАрдПрд▓ рдИрдПрд╕ 3.0 рдХрд╛ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рд╕реА рднреА рдЕрддрд┐рд░рд┐рдХреНрдд рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЖрдкрдХреЛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп OpenGL ES 2.0 рд╕рдВрджрд░реНрдн рдмрдирд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ GPU OpenGL ES 3.0 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рддреЛ Android рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ OpenGL ES 3.0 рд╕рдВрджрд░реНрдн рдмрдирд╛рдПрдЧрд╛ рдЬреЛ OpenGL ES 2.0 рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреАрдЫреЗ рдХреА рдУрд░ рд╕рдВрдЧрдд рд╣реИред рдпрд╣реА рд╣реИ, рдПрдВрдбреНрд░реЙрдЗрдб 4.3 рдкрд░, OpenGL ES 2.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ OpenGL ES 3.0 рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдкрд░рд┐рдгрд╛рдореА рд╕рдВрджрд░реНрдн 3.0 рд╣реИ, рдЖрдкрдХреЛ GL_VERSION рд▓рд╛рдЗрди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред Android 4.3 рд╕реНрд░реЛрдд рд╕реЗ рдирдореВрдирд╛ рдХреЛрдб: android.googlesource.com/platform/frameworks/base/+/android-4.3_r0.9/libs/hwui/Extensions.cpp
рдЗрд╕рдХреЗ рд▓рд┐рдП рд░реЛрдореЗрди рдЧрд╛рдЗ рдХрд╛ рдзрдиреНрдпрд╡рд╛рдж рдФрд░ рд░рд┐рд▓реАрдЬ рдХреЗ рджрд┐рди 4.3 рдкрд░ рдУрдкрдирдЬреАрдПрд╕ рдИрдПрд╕ 3.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдиреНрдп рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг: plus.google.com/u/0/+RomainGuy/posts/iJmTjpUfR5E

рдирдореВрдирд╛ рдЬрд╛рд╡рд╛ рдХреЛрдб:

protected int mOpenGLVersionMajor; protected int mOpenGLVersionMinor; String strGLVersion = GLES20.glGetString(GLES20.GL_VERSION); if (strGLVersion != null) { Scanner scanner = new Scanner(strGLVersion); scanner.useDelimiter("[^\\w']+"); int i = 0; while (scanner.hasNext()) { if (scanner.hasNextInt()) { if (i == 0) { mOpenGLVersionMajor = scanner.nextInt(); i++; } if (i == 1) { mOpenGLVersionMinor = scanner.nextInt(); i++; } } if (scanner.hasNext()) { scanner.next(); } } } protected Boolean isES2() { return mOpenGLVersionMajor == 2; } protected Boolean isES3() { return mOpenGLVersionMajor == 3; } 

nVidia


рдпрд╣рд╛рдБ, рд╢рд╛рдпрдж, рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рд╣рдо Nexus 7 рдХреЛ рдПрдВрдбреНрд░реЙрдЗрдб 4.3 рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рджреЗрд░реА рдХреА рдкрд░рд╡рд╛рд╣ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдПрдирд╡реАрдбрд┐рдпрд╛ рдЯреЗрдЧреНрд░рд╛ 2/3 рдЪрд┐рдкреНрд╕ рдУрдкрдирдЬреАрдПрд▓ рдИрдПрд╕ 3.0 рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЯреЗрдЧреНрд░рд╛ 4 рднреА рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдПрдирд╡реАрдЖрдИрдбреАрдЖрдИрдП рдмрд╕ рдЕрдкрдиреЗ рдбреЗрд╕реНрдХрдЯреЙрдк рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ рдореЛрдмрд╛рдЗрд▓ рдЪрд┐рдкреНрд╕ рдореЗрдВ рдзрдХреЗрд▓рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИ, рдФрд░ рдЙрдирдХрд╛ рд╡рд┐рдкрдгрди рд╡рд┐рднрд╛рдЧ рдЗрд╕ рд╕реБрд╕реНрдд рд╕рдорд╛рдзрд╛рди рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдзрдХреНрдХрд╛ рджреЗрддрд╛ рд╣реИред Tegra 4 Whitepaper, рдкреГрд╖реНрда 11: www.nvidia.com/docs/IO/116757/Tegra_4_GPU_Whitepaper_FINALP2.pdf рдореЗрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рдмрд╣рд╛рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЪрд┐рдк ES 3.0 рдХреЗ рдкреВрд░реНрдг рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреА рд╣реИ, рдФрд░ рдЦреБрд▓реЗ рддреМрд░ рдкрд░ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ " рд╣рдо рдЬрд▓реНрдж рд╣реА рдХрднреА рднреА ES 3.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдРрдкреНрд╕ / рдЧреЗрдореНрд╕ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред тАЭ рдЖрд╢реНрдЪрд░реНрдп - рдПрдВрдбреНрд░реЙрдЗрдб 4.3 рдореЗрдВ рдЦреБрдж рдУрдкрдирдЬреАрдПрд▓ рдИрдПрд╕ 3.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐ nVidia ES 3.0 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдЪрд┐рдкреНрд╕ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдирд╣реАрдВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, Tegra 5 рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдЧрд╛: www.ubergizmo.com/2013/07/nvidia-tegra-5-release-date-specs-news

рдХрдореНрдкреНрд░реЗрд╕реНрдб рдЯреЗрдХреНрд╕рдЪрд░ рдмрдирд╛рдПрдВ


ETC2 рдмрдирд╛рд╡рдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдорд╛рд▓реА рдмрдирд╛рд╡рдЯ рд╕рдВрдкреАрдбрд╝рди рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛: malideveloper.arm.com/develop-for-mali/mali-gpu-texture-compression-tool ред рдмрдирд╛рд╡рдЯ рдХреА рд╕рд░реНрд╡реЛрддреНрддрдо рдЧреБрдгрд╡рддреНрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдВрдкреАрдбрд╝рди рд╡рд┐рдзрд┐ "рдзреАрдореА" рдФрд░ рддреНрд░реБрдЯрд┐ рдореАрдЯреНрд░рд┐рдХ "рдЕрд╡рдзрд╛рд░рдгрд╛рддреНрдордХ" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдиреАрдЪреЗ рдИрдЯреАрд╕реА 1 рдФрд░ рдИрдЯреАрд╕реА 2 рдХреЗ рд╕рдВрдкреАрдбрд╝рди рдЧреБрдгрд╡рддреНрддрд╛ рдХреА рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫрд╡рд┐рдпрд╛рдВ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдореВрд▓ рдФрд░ рд╕рдВрдХреБрдЪрд┐рдд рдЫрд╡рд┐ рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░, рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП 4 рдЧреБрдирд╛ рдмрдврд╝рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЬрдм рдИрдЯреАрд╕реА 1 рдореЗрдВ рдмрдирд╛рд╡рдЯ рд╕рдВрдХреБрдЪрд┐рдд рд╣реЛрддреА рд╣реИ, рддреЛ рдХрд▓рд╛рдХреГрддрд┐рдпрд╛рдВ рдХреНрд╖реИрддрд┐рдЬ (рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА) рдФрд░ рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдзрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВред рдЬрдм рдИрдЯреАрд╕реА 2 рд╕рдВрдкреАрдбрд╝рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпреЗ рдХрд▓рд╛рдХреГрддрд┐рдпрд╛рдВ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реЛрддреА рд╣реИрдВред
рд╣рдорд╛рд░реЗ рд▓рд╛рдЗрд╡ рд╡реЙрд▓рдкреЗрдкрд░ рдореЗрдВ, рдЬрд┐рди рджреГрд╢реНрдпреЛрдВ рдХреА рдмрдирд╛рд╡рдЯ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рд╡реЗ рдЧреИрд░-рд╕рдВрдХреБрдЪрд┐рдд рдмрдирд╛рд╡рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рддреБрд▓рдирд╛рддреНрдордХ рдЫрд╡рд┐ рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, ETC1 рдЪрд┐рдХрдиреА рдЧреНрд░реЗрдбрд┐рдПрдВрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдмрдирд╛рд╡рдЯ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╡рд┐рдХреГрддрд┐рдпреЛрдВ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИ - 4x4 рдкрд┐рдХреНрд╕реЗрд▓ рд╡рд░реНрдЧреЛрдВ рдХреА рд╕рдВрдкреАрдбрд╝рди рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдХрд╛рд░рдг рд╕рдВрдкреАрдбрд╝рди рдХрд▓рд╛рдХреГрддрд┐рдпрд╛рдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЖрдХрд╛рд╢ рдХреЗ рд▓рд┐рдП рд╣рдо рд╕рдВрдкреАрдбрд╝рди рдХреЗ рдмрд┐рдирд╛ рдмрдирд╛рд╡рдЯ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╡реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реНрдерд╛рди рд▓реЗрддреЗ рд╣реИрдВ - рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХрд╛ рдЖрдХрд╛рд░ 2048x512 рд╣реИред PVRTC рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рдВрдкреАрдбрд╝рди рднреА рдПрдХ рдЕрдЪреНрдЫреА рдмрдирд╛рд╡рдЯ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреЗрд╡рд▓ PowerVR рдЪрд┐рдкреНрд╕ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред ES 3.0 рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ ETC2 рдкреНрд░рд╛рд░реВрдк рдХреЗ рдЙрдкрдпреЛрдЧ рдиреЗ рдмрдирд╛рд╡рдЯ рдмрдирд╛рд╡рдЯ рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рд╡реАрдбрд┐рдпреЛ рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░рддреЗ рд╣реБрдП рд╕реНрд╡реАрдХрд╛рд░реНрдп рдмрдирд╛рд╡рдЯ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛ рджрд┐рдпрд╛ рд╣реИ:
рдмрдирд╛рд╡рдЯ рдХреЗ рд▓рд┐рдП 2048x512:
рдЕрд╕рдореНрдкреАрдбрд┐рдд (16-рдмрд┐рдЯ рд░рдВрдЧ 565 - 2 рдмрд╛рдЗрдЯреНрд╕ рдкреНрд░рддрд┐ рдкрд┐рдХреНрд╕реЗрд▓): 2 * 2048 * 512 = 2097152 // 3 рдПрдордмреА рдбреЗрдЯрд╛
рд╕рдВрдкреАрдбрд╝рд┐рдд (16 рдмрд╛рдЗрдЯреНрд╕ - рдкреАрдХреЗрдПрдо рд╣реЗрдбрд░): 524304-16 = 524288 // 512 рдХреЗрдмреА рдбреЗрдЯрд╛ред

рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ ETC2 рдмрдирд╛рд╡рдЯ


рдмрдирд╛рд╡рдЯ .pkm рдлрд╝рд╛рдЗрд▓ рд╕реЗ рднрд░реА рд╣реБрдИ рд╣реИред ETC1 рдмрдирд╛рд╡рдЯ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢реАрд░реНрд╖рдХ рдкреНрд░рд╛рд░реВрдк рдпрд╣рд╛рдБ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: forum.arm.com/index.php?/topic/15835-pkm-heax-bat

рдореИрдВрдиреЗ ETC1Util рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ ETC2 рдмрдирд╛рд╡рдЯ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рд╣реЗрдбрд░ рд╕рддреНрдпрд╛рдкрди рд╣реИред
рдмрдирд╛рд╡рдЯ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб:

 protected int loadETC2Texture(String filename, int compression, Boolean bClamp, Boolean bHighQuality) { int[] textures = new int[1]; GLES20.glGenTextures(1, textures, 0); int textureID = textures[0]; GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, textureID); if (bHighQuality) { GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_LINEAR); GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR); } else { GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST); GLES20.glTexParameterf(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_LINEAR); } if (bClamp) { GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_CLAMP_TO_EDGE); GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_CLAMP_TO_EDGE); } else { GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_REPEAT); GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_REPEAT); } InputStream is = null; try { is = mWallpaper.getContext().getAssets().open(filename); } catch (IOException e1) { e1.printStackTrace(); } try { byte[] data = readFile(is); ByteBuffer buffer = ByteBuffer.allocateDirect(data.length).order(ByteOrder.LITTLE_ENDIAN); buffer.put(data).position(PKM_HEADER_SIZE); ByteBuffer header = ByteBuffer.allocateDirect(PKM_HEADER_SIZE).order(ByteOrder.BIG_ENDIAN); header.put(data, 0, PKM_HEADER_SIZE).position(0); int width = header.getShort(PKM_HEADER_WIDTH_OFFSET); int height = header.getShort(PKM_HEADER_HEIGHT_OFFSET); GLES20.glCompressedTexImage2D(GLES20.GL_TEXTURE_2D, 0, compression, width, height, 0, data.length - PKM_HEADER_SIZE, buffer); checkGlError("Loading of ETC2 texture; call to glCompressedTexImage2D()"); } catch (Exception e) { Log.w(TAG, "Could not load ETC2 texture: " + e); } finally { try { is.close(); } catch (IOException e) { // ignore exception thrown from close. } } return textureID; } ... if (isES3()) { textureID = loadETC2Texture("textures/etc2/sky1.pkm", GLES30.GL_COMPRESSED_RGB8_ETC2, false, false); } else { textureID = loadTexture("textures/sky1.png"); } ... 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдИрдПрд╕ 3.0 рд╕рдВрджрд░реНрдн рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдИрдЯреАрд╕реА 2 рдмрдирд╛рд╡рдЯ рдХреЛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдИрдПрд╕ 2.0 рдореЛрдб рдореЗрдВ, рд╕рд╛рдорд╛рдиреНрдп рдЕрд╕рдореНрдкреАрдбрд┐рдд рдмрдирд╛рд╡рдЯ рдХреЛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдмреЗрд╢рдХ, GLES30 рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗрдЯ рдЕрдк рдФрд░ рд▓рдХреНрд╖реНрдп = android-18 рдХреЛ project.properties рдореЗрдВ android: targetSdkVersion = "18" рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдкрд░рд┐рдгрд╛рдо


рдЖрд╡реЗрджрди рдореЗрдВ, рдЕрд╕рдореНрдкреАрдбрд┐рдд рдмрдирд╛рд╡рдЯ (рд╡рд┐рд░реВрдкрдг рдХреЗ рдмрд┐рдирд╛) рдФрд░ ETC2 рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ:


рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реИ: play.google.com/store/apps/details?id=org.androidworks.livewallpaperfree

рдирд┐рд╖реНрдХрд░реНрд╖


рд╣рдо рд╣рдореЗрд╢рд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдФрд░ рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдВрдбреНрд░реЙрдЗрдб рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдХреА рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╡реЙрд▓рдкреЗрдкрд░ рд╕реНрдХреНрд░реАрди рд╕реЗрд╡рд░ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд╛ рд╕рдорд░реНрдерди рднреА рдХрд░рддрд╛ рд╣реИ - рджрд┐рд╡рд╛рд╕реНрд╡рдкреНрдиред рдпрджреНрдпрдкрд┐ рд▓реЗрдЦ рдХрд╛рдлреА рдмрдбрд╝рд╛ рдирд╣реАрдВ рдирд┐рдХрд▓рд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдИрдЯреАрд╕реА 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╣рдорд╛рд░рд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЕрдиреБрднрд╡ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдкреБрдирд╢реНрдЪ

рдЕрдЧрд░ рдХрд┐рд╕реА рдиреЗ рд╕реИрдорд╕рдВрдЧ рдЧреИрд▓реЗрдХреНрд╕реА рдПрд╕ 4 рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реАрдХ рдлрд░реНрдорд╡реЗрдпрд░ 4.3 рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред

Source: https://habr.com/ru/post/In188252/


All Articles