博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OpenGL_ES1.1在wince6.0的初始化。
阅读量:6368 次
发布时间:2019-06-23

本文共 2583 字,大约阅读时间需要 8 分钟。

#include 
#include
#include "ximage.h"#pragma comment(lib, "libEGL.lib")#pragma comment(lib, "libGLESv1_CM.lib")#define glF(x) ((GLfixed)((x)*(1<<16)))#define GL_F GL_FIXEDtypedef GLfixed GLf;#define PI 3.141592653class COpenGLES{public: COpenGLES(void); ~COpenGLES(void); EGLConfig m_EGLXConfig; EGLContext m_EGLXContext; EGLSurface m_EGLXSurface; EGLDisplay m_EGLXDisplay; EGLint m_EGLXNumOfConfigs; EGLint max_num_config; NativeDisplayType g_dpy; HWND m_hwnd; BOOL CreateEGL(HWND hwnd); void DeleteEGL(); void glPerspectivef(GLfloat fov, GLfloat aspect, GLfloat near_val, GLfloat far_val); void SetProjectToOrtho(void); void SetProjectToFrustum(); void EGLFlush(); bool Init(HWND m_hWnd); void InitGLES(); void CloseGLES();};

 cpp

COpenGLES::COpenGLES(void){}COpenGLES::~COpenGLES(void){}BOOL COpenGLES::CreateEGL(HWND hwnd){	m_hwnd = hwnd;	EGLint const attrib_list[] = {		EGL_RED_SIZE, 5,  		EGL_GREEN_SIZE, 6,		EGL_BLUE_SIZE, 5,   		EGL_ALPHA_SIZE, 0,  		EGL_RENDERABLE_TYPE, 		EGL_OPENGL_ES_BIT, 		EGL_SURFACE_TYPE,		EGL_WINDOW_BIT,  		EGL_SAMPLE_BUFFERS, GL_FALSE,		EGL_NONE 	};	EGLint ai32ContextAttribs[] = { EGL_CONTEXT_CLIENT_VERSION, 1, EGL_NONE };	EGLConfig *configs = NULL;	g_dpy = ::GetDC(hwnd);	EGLint major, minor, num_config;	m_EGLXDisplay = eglGetDisplay( g_dpy );	if ( EGL_NO_DISPLAY == m_EGLXDisplay )	{		printf( "eglGetDisplay() failed (error 0x%x)\n", eglGetError() );		return 0;	}	if ( EGL_FALSE == eglInitialize( m_EGLXDisplay, &major, &minor ) )	{		printf( "eglInitialize() failed (error 0x%x)\n", eglGetError() );		return 0;	}	if ( EGL_FALSE == eglGetConfigs(m_EGLXDisplay, NULL, 0, &max_num_config) )	{		return 0;	}	if(max_num_config <= 0)	{		return 0;	}	configs = (EGLConfig *)malloc( sizeof( EGLConfig) * max_num_config );	if ( NULL == configs )	{		return 0;	}	printf("max_num_config=%d\n",max_num_config);//23	if ( EGL_FALSE == eglChooseConfig( m_EGLXDisplay, attrib_list, configs,max_num_config, &m_EGLXNumOfConfigs ) )	{		printf( "eglChooseConfig() failed (error 0x%x)\n", eglGetError() );		return 0;	}	printf("m_EGLXNumOfConfigs=%d\n",m_EGLXNumOfConfigs);//8	if ( 0 == m_EGLXNumOfConfigs )	{		printf( "eglChooseConfig() was unable to find a suitable config\n" );		return 0;	}	for (int i=0; i

 使用:

COpenGLES gl;gl.Init(m_hWnd);gl.SetProjectToOrtho();

 

在函数CreateEGL中

m_EGLXSurface = eglCreateWindowSurface( m_EGLXDisplay, m_EGLXConfig, hwnd, 0 );

第三个参数,可以传入对话框的句柄,这样,opengles与gdi使用同一个窗口。

如果传入null,GDI无法在窗口上绘图。这样如果要在屏幕上输出字符比较麻烦。(这种情况,我先将字符转为纹理,再输出)。

转载于:https://www.cnblogs.com/ezhong/archive/2011/12/20/2294941.html

你可能感兴趣的文章
China Unicom and Chunghwa Telecom work together&nb
查看>>
Java图片上查找图片算法
查看>>
Python fabric实现远程操作和部署
查看>>
详解Java中staitc关键字
查看>>
前中情局局长:FBI目的是从根本上改善iPhone
查看>>
大隐隐于市,你身边的那些安全隐患你都知道么?
查看>>
物联网市场迅猛发展 “中国芯”如何把握机会?
查看>>
aws 上使用elb 的多域名问题
查看>>
环球花木网的目标就是致力于打造成为“园林相关行业的专业性门户网站
查看>>
《编写高质量代码:改善c程序代码的125个建议》—— 建议14-1:尽量避免对未知的有符号数执行位操作...
查看>>
《C语言编程魔法书:基于C11标准》——2.2 整数在计算机中的表示
查看>>
全球程序员编程水平排行榜TOP50,中国排名第一
查看>>
HDFS 进化,Hadoop 即将拥抱对象存储?
查看>>
Edge 浏览器奇葩 bug:“123456”打印成“114447”
查看>>
Sirius —— 开源版的 Siri ,由 Google 支持
查看>>
《OpenGL ES应用开发实践指南:Android卷》—— 2.7 小结
查看>>
《Windows Server 2012活动目录管理实践》——第 2 章 部署第一台域控制器2.1 案例任务...
查看>>
Java Date Time 教程-时间测量
查看>>
Selector.wakeup实现注记
查看>>
《Java EE 7精粹》—— 第1章 Java EE 1.1 简介
查看>>