浏览代码

refine code

/siyaoH-1.17-PlatformMessage
xingweizhu 3 年前
当前提交
fdd330b3
共有 3 个文件被更改,包括 6 次插入13 次删除
  1. 7
      engine/src/shell/platform/unity/windows/uiwidgets_panel.cc
  2. 10
      engine/src/shell/platform/unity/windows/unity_surface_manager.cc
  3. 2
      engine/src/shell/platform/unity/windows/unity_surface_manager.h

7
engine/src/shell/platform/unity/windows/uiwidgets_panel.cc


FML_DCHECK(fbo_ == 0);
surface_manager_->MakeCurrent(EGL_NO_DISPLAY);
//return surface_manager_->CreateRenderTexture(width, height);
surface_manager_->ClearCurrent();

void UIWidgetsPanel::MonoEntrypoint() { entrypoint_callback_(handle_); }
void UIWidgetsPanel::OnDisable() {
process_events_ = false;
UIWidgetsSystem::GetInstancePtr()->UnregisterPanel(this);

10
engine/src/shell/platform/unity/windows/unity_surface_manager.cc


#include <d3d11.h>
#include <dxgi.h>
#include <flutter/fml/logging.h>
#include "uiwidgets_system.h"
#include "Unity/IUnityGraphics.h"
#include "Unity/IUnityGraphicsD3D11.h"

UnitySurfaceManager::~UnitySurfaceManager() { CleanUp(); }
void* UnitySurfaceManager::CreateRenderTexture(size_t width, size_t height) {
void UnitySurfaceManager::CreateRenderTexture(size_t width, size_t height) {
D3D11_TEXTURE2D_DESC desc = {0};
desc.Width = width;
desc.Height = height;

desc.MiscFlags = D3D11_RESOURCE_MISC_SHARED;
HRESULT hr = d3d11_device_->CreateTexture2D(&desc, nullptr, &d3d11_texture);
return static_cast<void*>(d3d11_texture);
FML_CHECK(SUCCEEDED(hr)) << "UnitySurfaceManager: Create Native d3d11Texture2D failed";
}
GLuint UnitySurfaceManager::CreateRenderSurface(size_t width, size_t height) {

FML_CHECK(SUCCEEDED(hr)) << "UnitySurfaceManager: QueryInterface() failed";
HANDLE shared_image_handle;
hr = image_resource->GetSharedHandle(&shared_image_handle);
hr = image_resource->GetSharedHandle(&shared_image_handle);
FML_CHECK(SUCCEEDED(hr)) << "UnitySurfaceManager: GetSharedHandle() failed";
image_resource->Release();

glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
fbo_texture_, 0);
auto flag = glCheckFramebufferStatus(GL_FRAMEBUFFER);
FML_CHECK(flag ==
FML_CHECK(glCheckFramebufferStatus(GL_FRAMEBUFFER) ==
GL_FRAMEBUFFER_COMPLETE);
glBindFramebuffer(GL_FRAMEBUFFER, old_framebuffer_binding);

2
engine/src/shell/platform/unity/windows/unity_surface_manager.h


~UnitySurfaceManager();
GLuint CreateRenderSurface(size_t width, size_t height);
void*CreateRenderTexture(size_t width, size_t height);
bool ReleaseNativeRenderTexture();

private:
bool Initialize(IUnityInterfaces* unity_interfaces);
void CreateRenderTexture(size_t width, size_t height);
void CleanUp();
EGLDisplay egl_display_;

正在加载...
取消
保存