增加像素获取

This commit is contained in:
JackLee 2026-03-04 19:43:11 +08:00
parent bb1275992f
commit 8b9dbff0ee
3 changed files with 23 additions and 2 deletions

View File

@ -45,7 +45,7 @@ find_library(GLES-lib GLESv3)
#System so
set(SYSTEM_LIBS
libace_napi.z.so libnative_window.so
libace_napi.z.so libnative_window.so libnative_display_manager.so
hilog_ndk.z ace_ndk.z uv z
)

View File

@ -55,7 +55,9 @@ bool NativeRender::init(int width, int height,EGLCore* eglCore) {
OH_LOG_Print(LOG_APP, LOG_ERROR, LOG_PRINT_DOMAIN, "Render", "GL Error before render: 0x%{public}x", glGetError());
return true;
}
void NativeRender::initViewer(){
displayPixelRatio();
Handle(Aspect_DisplayConnection) displayConnection=new Aspect_DisplayConnection();
// 创建图形驱动
if (graphicDriver_.IsNull()) {
@ -69,10 +71,21 @@ void NativeRender::initViewer(){
viewer_->SetDefaultLights();
viewer_->SetLightOn();
}
float NativeRender::displayPixelRatio(){
float densityPixels;
NativeDisplayManager_ErrorCode errCode = OH_NativeDisplayManager_GetDefaultDisplayVirtualPixelRatio(&densityPixels);
if (errCode == NativeDisplayManager_ErrorCode::DISPLAY_MANAGER_OK) {
OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "DMSTest", "rotation=%{public}d", densityPixels);
return densityPixels;
} else {
OH_LOG_Print(LOG_APP, LOG_INFO, LOG_PRINT_DOMAIN, "DMSTest",
"GetDefaultDisplayRotation errCode=%{public}d", errCode);
}
}
void NativeRender::initContext(){
context_ = new AIS_InteractiveContext(viewer_);
context_->SetDisplayMode(AIS_Shaded, Standard_False); // 默认使用着色模式
//context_->SetPixelTolerance (int(myDevicePixelRatio * 6.0)); // increase tolerance and adjust to hi-dpi screens
context_->SetPixelTolerance (int(displayPixelRatio() * 6.0)); // increase tolerance and adjust to hi-dpi screens
}
void NativeRender::initView() {
Handle(Aspect_NeutralWindow) m_Window = new Aspect_NeutralWindow();
@ -81,6 +94,7 @@ void NativeRender::initView() {
// 设置渲染参数
view_->SetImmediateUpdate (false);
//view_->ChangeRenderingParams().ToShowStats = true;
view_->ChangeRenderingParams().Resolution = (unsigned int )(96.0 * displayPixelRatio() + 0.5);
view_->ChangeRenderingParams().Method = Graphic3d_RM_RASTERIZATION;
view_->ChangeRenderingParams().IsShadowEnabled = Standard_False;
view_->ChangeRenderingParams().IsReflectionEnabled = Standard_False;

View File

@ -23,6 +23,9 @@
#include "common.h"
#include <EGL/egl.h>
#include "EGLCore.h"
#include <window_manager/oh_display_info.h>
#include <window_manager/oh_display_manager.h>
class Aspect_Window;
class gp_Quaternion;
class Graphic3d_Camera;
@ -44,6 +47,7 @@ public:
void setClearColor(float r, float g, float b, float a);
void setZoomLevel(float zoom);
void setTranslation(float x, float y);
float displayPixelRatio();
private:
void initViewer();
void initContext();
@ -61,11 +65,14 @@ private:
float rotationX_;
float rotationY_;
float rotationZ_;
float zoomLevel_;
int width_;
int height_;
float translationX_;
float translationY_;
float translationZ_;
Quantity_Color clearColor_;
};
} // namespace NativeRender