WinCE OpenGL绘制立方体和纹理贴图

        最近工作之余,开始学习OpenGL,  想到WINCE也是支持OpenGL的,只不过是嵌入式的OpenGL ES。于是尝试写了一个WINCE下的OpenGL测试程序,实现了绘制立方体和纹理。效果图如下:

     

      需要注意的是,WINCE系统上开发OpenGL程序需具备以下条件:

      1. 处理器的支持,嵌入式处理器需支持3D加速渲染(测试使用的是Telichips 8901);

      2. WINCE内核的支持,定制内核时需添加OpenGL ES相关组件。

      以下是具体的参考代码:

/********************************************************************
filename: 	WinceOpenGLDemo.cpp
created:	2011-01-05
author:		firehood
purpose:	利用OpenGL ES实现了绘制立方体和纹理效果
*********************************************************************/

// WinceOpenGLDemo.cpp : 定义应用程序的入口点。
//

#include "stdafx.h"
#include "WinceOpenGLDemo.h"
#include <windows.h>
#include <commctrl.h>
#include "ImgLoader.h"
// OpenGL ES Includes   
#include <GLES/gl.h>
#include <GLES/glext.h>
#include <EGL/egl.h>
#include <EGL/eglext.h>

// OpenGL lib
#pragma comment(lib, "OpenGlLib\\libGLESv1_CM.lib")   
#pragma comment(lib, "OpenGlLib\\libEGL.lib")

// 全局变量:
HINSTANCE	g_hInst;			// 当前实例
TCHAR       szAppName[] = L"OpenGLES";        /*The application name and the window caption*/
CImgLoader  g_Image;
// OpenGL variables   
EGLDisplay glesDisplay;  // EGL display   
EGLSurface glesSurface;  // EGL rendering surface   
EGLContext glesContext;  // EGL rendering context  

GLuint texture[6] = {0};  

// 立方体定点坐标
GLshort vertices[] = {  
	-1,-1,1,  
	1,-1,1,  
	1,1,1,  
	-1,1,1,  

	-1,-1,-1,  
	-1,1,-1,  
	1,1,-1,  
	1,-1,-1,  

	-1,1,-1,  
	-1,1,1,  
	1,1,1,  
	1,1,-1,  

	-1,-1,-1,  
	1,-1,-1,  
	1,-1,1,  
	-1,-1,1,  

	1,-1,-1,  
	1,1,-1,  
	1,1,1,  
	1,-1,1,  

	-1,-1,-1,  
	-1,-1,1,  
	-1,1,1,  
	-1,1,-1
};  

// 各个面纹理坐标
GLshort texCoords[] = {  
	0,0,1,0,1,1,0,1,      
	0,0,1,0,1,1,0,1,     
	0,0,1,0,1,1,0,1,     
	0,0,1,0,1,1,0,1,     
	0,0,1,0,1,1,0,1,     
	0,0,1,0,1,1,0,1,     
};  

// 三角形索引数据
GLbyte indices1[] = {  
	0,1,3,2,  
	0,0,0,0,  
	0,0,0,0,  
	0,0,0,0,  
	0,0,0,0,  
	0,0,0,0 
}; 
GLbyte indices2[] = {  
	0,0,0,0,  
	4,5,7,6,  
	0,0,0,0,  
	0,0,0,0,  
	0,0,0,0,  
	0,0,0,0 
}; 
GLbyte indices3[] = {  
	0,0,0,0,  
	0,0,0,0,  
	8,9,11,10,  
	0,0,0,0,  
	0,0,0,0,  
	0,0,0,0 
};  
GLbyte indices4[] = {  
	0,0,0,0,  
	0,0,0,0,  
	0,0,0,0,  
	12,13,15,14,  
	0,0,0,0,  
	0,0,0,0
};  
GLbyte indices5[] = {  
	0,0,0,0,  
	0,0,0,0,  
	0,0,0,0,  
	0,0,0,0,  
	16,17,19,18,  
	0,0,0,0
};  
GLbyte indices6[] = {  
	0,0,0,0,  
	0,0,0,0,  
	0,0,0,0,  
	0,0,0,0,  
	0,0,0,0,  
	20,21,23,22
};

// 此代码模块中包含的函数的前向声明:
ATOM			MyRegisterClass(HINSTANCE, LPTSTR);
BOOL			InitInstance(HINSTANCE, int);
LRESULT CALLBACK	WndProc(HWND, UINT, WPARAM, LPARAM);

BOOL InitOGLES(HWND hWnd);
void CreateSurface();
BOOL LoadTexture(LPCTSTR lpFileName,GLuint *id);
void Render();
void Clean();

int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPTSTR    lpCmdLine,
                   int       nCmdShow)
{
	MSG msg;

	// 执行应用程序初始化:
	if (!InitInstance(hI
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值