⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 display.c

📁 linux环境下jpeg编解码算法的实现
💻 C
字号:
#include <math.h>#include <zevio/gpu_factory.h>#include <GLES/egl.h>#include "display.h"#define OGLFIXED_SHIFT				16#define OGLFIXED_ONE				( 1 << OGLFIXED_SHIFT )#define OGLFLOAT_TO_FIXED(_x)		( (_x) * (OGLFIXED_ONE) )#define NEARCLIP		            1.0f#define FARCLIP			            500.0f#define FOV				            90#define PI				            3.14159fGLfloat vertex[] = {	-1.0f, -1.0f,  0.0f,	1.0f, -1.0f,  0.0f,	-1.0f,  1.0f,  0.0f,	1.0f,  1.0f,  0.0f,};GLfloat texCoord[] = {	0.0, 1.0,	1.0, 1.0,	0.0, 0.0,	1.0, 0.0,};const int bitmapDimensions[2]={800,600};static void reshape(int width, int height){	glMatrixMode( GL_PROJECTION );	glLoadIdentity();	glViewport(0, 0, width, height);	{		float aspect, top, bottom, left, right;		aspect = (float)width/(float)height;		top = tan( (float)FOV * PI / 360.f ) * NEARCLIP;		bottom = -top;		left = aspect*top;		right = -left;		glFrustumx( OGLFLOAT_TO_FIXED( left ), OGLFLOAT_TO_FIXED( right  ),		            OGLFLOAT_TO_FIXED( top ),  OGLFLOAT_TO_FIXED( bottom ),		            OGLFLOAT_TO_FIXED( NEARCLIP ), OGLFLOAT_TO_FIXED( FARCLIP ) );	}	glMatrixMode(GL_MODELVIEW);	glLoadIdentity();}void display_init(){	reshape(SVGA_WINDOW_WIDTH,SVGA_WINDOW_HEIGHT); // init view	glEnable(GL_DEPTH_TEST);	glDepthFunc(GL_LEQUAL);	glClearColor(0.0f, 0.0f, 0.0f, 0.0f);	glClearDepthf(1.0f);	glShadeModel(GL_FLAT);	int texWidth, texHeight;	for (texWidth = 16; texWidth < bitmapDimensions[0]; texWidth <<= 1);	for (texHeight = 16; texHeight < bitmapDimensions[1]; texHeight <<= 1);	int i;	for (i = 0; i < 4; i++)	{		vertex[i*3]     *= ((GLfloat)bitmapDimensions[0]/bitmapDimensions[1]);		texCoord[i*2]   *= ((GLfloat)bitmapDimensions[0])/texWidth;		texCoord[i*2+1] *= ((GLfloat)bitmapDimensions[1])/texHeight;	}}static void redraw(){	glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);	glEnableClientState(GL_VERTEX_ARRAY | GL_TEXTURE_COORD_ARRAY);	glVertexPointer(3, GL_FLOAT, 0, vertex);	glTexCoordPointer(2, GL_FLOAT, 0, texCoord);	glLoadIdentity();	glTranslatef(0.0f,0.0f,-1.0f);	glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);	glFlush ();	zevio2d_wait_for_vsync();	GPU_Factory_SwapFrameBuffers();}void loadBitmapTexture(void *pixels, int width, int height, unsigned short *base, unsigned long offset){	int rowOffset = CALC_OFFSET_TO_Y(offset);	int colOffset = CALC_OFFSET_TO_X(offset);	unsigned short *addr;	int i,j;	int x,y=rowOffset;	for (i=0;i<height;i++,y++)	{		x=colOffset;		for (j=0;j<width;j++,x++)		{			addr = base + (((y)/8)*32 + ((x)/32)) * 256 + (((y)%8)*32 + ((x)%32));			*addr = *(((unsigned short*)pixels)+i*width+j);		}	}}void display_pixels(void *pData, unsigned short *gpuMem, unsigned long offset){//	loadBitmapTexture(pData,bitmapDimensions[0],bitmapDimensions[1],gpuMem,offset);	glZevioTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, bitmapDimensions[0], bitmapDimensions[1], 0,	                  GL_RGBA, GL_UNSIGNED_SHORT_5_5_5_1, pData, offset);	glEnable(GL_TEXTURE_2D);	glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);	redraw();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -