HarmonyOS鸿蒙Next中windows平台代码移植到鸿蒙平台

HarmonyOS鸿蒙Next中windows平台代码移植到鸿蒙平台 我现在需要将windows平台编写的代码移植到鸿蒙平台,在windows平台中有这么一个文件:

#pragma once
#include "Manager.h"
#include "Color.h"

namespace Figure
{
	//OpenGL环境管理类,用来管理系统中的OpenGL环境信息
	class GEOFIGURE_LIB CGLContext
	{
	public:
		//构造函数
		CGLContext();

		//析构函数
		~CGLContext();
	protected:
		HGLRC m_hGLContext;	//绘制环境句柄
	protected:
		//设置像素格式
		bool SetWindowPixelFormat(const HDC & hDC);
		
		//创建绘制环境(RC)并使之成为当前绘制环境
		bool CreateGLContext(const HDC & hDC);
	public:
		//初始化OpenGL环境
		bool InitGLContext(const HDC & hDC);

		//设置全局的OpenGL环境参数
		void SetOpenGLPara() const;
	};
}

移植到鸿蒙平台上时出现了这两个问题:

Unknown type name ‘HGLRC’

Unknown type name ‘HDC’

请问这两种类型在鸿蒙上有上面替代的吗?


更多关于HarmonyOS鸿蒙Next中windows平台代码移植到鸿蒙平台的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

移除所有Windows特有的图形接口调用(如SetWindowPixelFormat, wglCreateContext, wglMakeCurrent等)。 使用EGL API(如eglChooseConfig, eglCreateContext, eglCreateWindowSurface, eglMakeCurrent)来初始化OpenGL ES环境、创建渲染上下文并将其与鸿蒙的窗口表面(Surface)关联。

在鸿蒙系统中,你通常需要通过Window或SurfaceProvider等相关组件来获取原生窗口句柄(通常是EGLNativeWindowType),并将其传递给eglCreateWindowSurface。鸿蒙的ohos.agp.graphics等相关模块可能提供了相应的适配接口。

更多关于HarmonyOS鸿蒙Next中windows平台代码移植到鸿蒙平台的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


鸿蒙Next中Windows平台代码移植主要涉及API替换和架构适配。需使用ArkTS/JS重写UI层,调用鸿蒙原生API替代Win32/MFC接口。系统服务调用需改用鸿蒙分布式能力接口,文件路径需适配鸿蒙沙箱机制。多线程代码需改用鸿蒙TaskPool/Worker,网络模块需切换鸿蒙网络接口。可通过条件编译维护跨平台代码,但核心业务逻辑需按鸿蒙安全规范重构。

在HarmonyOS Next中,HGLRC和HDC是Windows平台特有的OpenGL和GDI类型,无法直接使用。鸿蒙平台使用EGL接口进行图形渲染管理。

替代方案:

  1. 使用EGLDisplay替代HDC(设备上下文)
  2. 使用EGLContext替代HGLRC(OpenGL渲染上下文)

需要引入EGL头文件:

#include <EGL/egl.h>
#include <EGL/eglext.h>

建议重构代码使用鸿蒙的图形接口,或者通过EGL封装层来适配原有的OpenGL调用。

回到顶部