- 在 C++ 應用程序中,使用
onConfigure()
函數。 - 在 application.cfg 中,使用或不使用 C++ 應用程序設置 Kanzi Studio 工程的參數。
While you can configure your Kanzi application in the onConfigure()
function, in application.cfg you can configure some parameters without recompiling your application or even without a C++ application. The configuration you specify in application.cfg overrides the configuration you specify in onConfigure()
.
For example, in application.cfg you can tell your Kanzi application which kzb file to load, enable performance information in your application, and set how many threads you want to use for loading the application resources.
See Configuring your application.
You can use these application configuration settings.
Loading
Performance
Glyph cache texture size
|
Graphics performance logging
Graphics library
Surface properties
|
Application window position and size
Application window style
Input handling and screen transformation
Input event devices on Linux
|
Loading
BinaryName
You can set which kzb file or configuration file your Kanzi application loads when you launch your Kanzi application.
See 使用 kzb 文件.
In application.cfg | BinaryName = "name" |
||
In onConfigure() |
configuration.binaryName = "name"; |
||
Value |
|
||
application.cfg example |
# Loads the kzb file named MyApplication.kzb. BinaryName = "MyApplication.kzb"
# Loads the binary configuration file MyApplicationKzbs.cfg that lists # all kzb files that your Kanzi application loads. BinaryName = "MyApplication.kzb.cfg"
|
||
onConfigure() example |
// Loads kzb file named MyApplication.kzb. configuration.binaryName = "MyApplication.kzb";
// Loads the binary configuration file MyApplicationKzbs.cfg that lists // all kzb files that your Kanzi application loads. configuration.binaryName = "MyApplication.kzb.cfg";
|
ModuleNames
You can set which plugins your Kanzi application loads when you launch your Kanzi application.
In application.cfg | ModuleNames= "names" |
||
In onConfigure() |
configuration.moduleNames = names; |
||
Values |
|
||
application.cfg example |
# Loads the plugin DLL files MyPlugin1.dll and MyPlugin2.dll. ModuleNames = "MyPlugin1; MyPlugin1"
|
||
onConfigure() example |
// Loads the plugin DLL files MyPlugin1.dll and MyPlugin2.dll. configuration.moduleNames = {"MyPlugin1", "MyPlugin1"}; |
LoadingThreadCount
當用戶在具有多核處理器的環境中運行 Kanzi 應用程序時,Kanzi 會自動使用多個 CPU 內核將 kzb 文件中的 GPU 資源加載到 RAM 中。 See 並行加載資源.
GPU 資源 Kanzi 並行加載包括所有類型在內的紋理、着色器和網格。爲將這些資源從 RAM 部署到 GPU 內存並加載預設件模板,Kanzi 始終使用主線程。請參閱圖像和紋理最佳實踐、着色器最佳實踐、網格最佳實踐。
In application.cfg | LoadingThreadCount = threads |
||
In onConfigure() |
configuration.loadingThreadCount = threads; |
||
Values |
|
||
application.cfg example |
# Switches off the use of multiple cores for loading your application. # Loads your application resources using the main thread. LoadingThreadCount = 0 # Uses six threads to load your application. LoadingThreadCount = 5 |
||
onConfigure() example |
// Switches off the use of multiple cores for loading your application. // Loads your application resources using the main thread. configuration.loadingThreadCount = 0; // Uses six threads to load your application. configuration.loadingThreadCount = 5; |
MaxPendingResources
You can set the maximum number of resources that the loading threads process at the same time. By increasing the number of resources you can speed up the loading, but at the same time you increase the peak memory use during loading because you can load more resources to the memory before they are deployed to the GPU.
In application.cfg | MaxPendingResources = resources |
||
In onConfigure() |
configuration.maxPendingResources = resources; |
||
Values |
|
||
application.cfg example |
# Sets the maximum number of resources processed by the loading # threads to the number of loading threads + 1. This is the default value. MaxPendingResources = 0 # Sets the maximum number of resources processed by the loading # threads to 20 resources. MaxPendingResources = 20 |
||
onConfigure() example |
// Sets the maximum number of resources processed by the loading // threads to the number of loading threads + 1. This is the default value. configuration.maxPendingResources = 0; // Sets the maximum number of resources processed by the loading // threads to 20 resources. configuration.maxPendingResources = 20; |
UseMemoryMappedLoading
在支持內存映射文件的操作系統上運行 Kanzi 應用程序時,您可以爲 Kanzi 應用程序使用的 kzb 文件啓用內存映射加載。您啓用內存映射加載後,因爲它減少了文件訪問量,所以可縮短 Kanzi 應用程序的加載時間。
內存映射文件受 Windows、Linux 和 QNX 等操作系統的支持。在啓用內存映射加載前,請檢查它是否受運行 Kanzi 應用程序的平臺支持。
要檢查您的平臺是否支持內存映射加載,請調用 kzsMemoryMappedFileIsSupported()
函數。如支持內存映射加載,函數返回 True,如不支持,則返回 False。
如果您在不支持功能的平臺上啓用內存映射加載,Kanzi 會顯示警告並使用常規文件訪問來加載 kzb 文件。
In application.cfg | UseMemoryMappedLoading = value |
||||
In onConfigure() |
configuration.useMemoryMappedLoading = value; |
||||
Values |
|
||||
application.cfg example |
# Enables the memory mapped loading for the kzb files in your Kanzi application. UseMemoryMappedLoading = 1 |
||||
onConfigure() example |
// Enables the memory mapped loading for the kzb files in your Kanzi application. configuration.useMemoryMappedLoading = 1; |
Performance
ApplicationIdleState
如果沒有輸入、任務、定時器、動畫,又或是應用程序中沒有可以更新渲染的任何內容,Kanzi 會暫停主循環。 See 應用程序空閒狀態.
當使用應用程序空閒狀態時,請考慮下面這些使用案例:
- 如果您的 Kanzi 應用程序正在顯示動畫,Kanzi 默認會調節 CPU 運行速度以獲得最高的 FPS。如果沒有顯示任何動畫,Kanzi 會將應用程序設置爲空閒狀態。因此,爲了節省 CPU 資源和能耗,Kanzi 默認會將最高幀速率限制爲 60 幀/秒。請使用應用程序配置來設置您的應用程序的最高幀速率。 See MaximumFPS.
- 如果您的應用程序需要連續調用
Application::updateOverride
,請禁用應用程序空閒狀態。
In application.cfg | ApplicationIdleState = value |
||||
In onConfigure() |
configuration.applicationIdleStateEnabled = value; |
||||
Values |
|
||||
application.cfg example |
# Disables the application idle state.
|
||||
onConfigure() example |
// Disables the application idle state. configuration.applicationIdleStateEnabled = 0; |
MaximumFPS
You can limit the number of frames rendered per second by setting the maximum frame rate.
如果您的 Kanzi 應用程序正在顯示動畫,Kanzi 默認會調節 CPU 運行速度以獲得最高的 FPS。如果沒有顯示任何動畫,Kanzi 會將應用程序設置爲空閒狀態。因此,爲了節省 CPU 資源和能耗,Kanzi 默認會將最高幀速率限制爲 60 幀/秒。請使用應用程序配置來設置您的應用程序的最高幀速率。
See PerformanceInfoLevel.
In application.cfg | MaximumFPS = limit |
||
In onConfigure() |
configuration.frameRateLimit = limit; |
||
Value |
|
||
application.cfg example |
# Sets the maximum application frame rate to 32 frames per second. MaximumFPS = 32 # Disables the limit. MaximumFPS = 0 |
||
onConfigure() example |
// Sets the maximum application frame rate to 32 frames per second. configuration.frameRateLimit = 32; // Disables the limit. configuration.frameRateLimit = 0; |
PerformanceInfoLevel
You can enable the display of 性能 HUD (Performance HUD) that shows the performance information for your Kanzi application. Use the 性能 HUD (Performance HUD) to see how your application performs on target devices and to find performance bottlenecks.
性能 HUD (Performance HUD) shows this performance information for your Kanzi application:
- FPS shows the number of frames rendered every second.
- Last Frame shows this information for the last frame:
- Time shows the time in milliseconds it took to render the frame.
- 批處理數 (Batch count) shows how many individual draw calls were executed (
glDrawElements
andglDrawArrays
).
You can access the batch count using the Kanzi Engine API by callinggetBatchCount()
. - Triangle Count shows how many individual triangles were drawn in total during a frame.
You can access the triangle count in the Kanzi Engine API by callinggetTriangleCount()
. - Texture Switches shows how many times a new texture was bound to GPU.
You can access the texture switch count in the Kanzi Engine API by callinggetTextureSwitchCount()
. - FBO Switches shows how many framebuffer objects were bound to GPU. See 渲染最佳實踐.
You can access the buffer switch count in the Kanzi Engine API by callinggetFramebufferSwitchCount()
. - Timeline Clock shows the time in milliseconds it took to execute all animations in the application.
- Shader shows how many times a new shader was bound for the newly applied batch and how many individual shader uniforms were sent for the last frame. See 減少着色器切換.
You can access the shader switch count in the Kanzi Engine API by callinggetShaderSwitchCount()
.
You can access the uniforms sent in the Kanzi Engine API by callinggetUniformSendCount()
. - Resource Memory Usage shows an estimated amount of local GPU memory (VRAM) and non-local GPU memory (RAM) that your Kanzi application uses.
The values that the 性能 HUD (Performance HUD) shows in the Kanzi Studio 預覽 (Preview) and when you run the Kanzi application on a target device differ because Kanzi Studio loads and keeps in memory all resources in the application.
See 最佳實踐.
In application.cfg | PerformanceInfoLevel = level |
||
In onConfigure() |
configuration.performanceInfoLevel = ApplicationProperties::level; |
||
Values |
|
||
application.cfg example |
# Enables the full 性能 HUD (Performance HUD) in a Kanzi application. PerformanceInfoLevel = 2 |
||
onConfigure() example |
// Enables the full 性能 HUD (Performance HUD) in a Kanzi application. configuration.performanceInfoLevel = ApplicationProperties::PerformanceInfoLevelFull; |
ProfilingCategoryFilter
You can control the state of performance profiling categories, which you use to group performance profilers, and set which profilers you want to show in the 性能 HUD (Performance HUD). See Measuring application performance.
In application.cfg | ProfilingCategoryFilter = "category=state" |
||||||||||
In onConfigure() |
configuration.profilingCategoryFilter = "category=state"; |
||||||||||
Values |
Separate a list of category-state pairs with semicolons (;). |
||||||||||
application.cfg examples |
# Enables the full 性能 HUD (Performance HUD). PerformanceInfoLevel = 2 # Enables performance profiling for animations running in the main loop and shows the performance graph in the 性能 HUD (Performance HUD). ProfilingCategoryFilter="MainLoopAnimation=show" # Enables the MyFunctionProfiler category and disables the MainLoopRendering category. ProfilingCategoryFilter="MyFunctionProfiler=on;MainLoopRendering=off" # Enables all performance profiling categories. ProfilingCategoryFilter="*=on" # Enables categories Generic and MyProfilingCategory. ProfilingCategoryFilter="Generic|MyProfilingCategory=on" |
||||||||||
onConfigure() examples |
// Enables the full 性能 HUD (Performance HUD). configuration.performanceInfoLevel = ApplicationProperties::PerformanceInfoLevelFull; // Enables performance profiling for animations running in the main loop and shows the performance graph in the 性能 HUD (Performance HUD). configuration.profilingCategoryFilter = "MainLoopAnimation=show"; # Enables the MyFunctionProfiler category and disables the MainLoopRendering category. configuration.profilingCategoryFilter="MyFunctionProfiler=on;MainLoopRendering=off" // Enables all performance profiling categories. configuration.profilingCategoryFilter = "*=on"; // Enables categories Generic and MyProfilingCategory. configuration.profilingCategoryFilter = "Generic|MyProfilingCategory=on"; |
This table lists the Kanzi startup performance profiling categories and profilers that are included in the Profiling build.
Category | Configuration name | Profiler |
---|---|---|
Application initialization | StartupInitialization |
m_initializationProfiler |
Default resource registration | StartupRegisterDefaultResources |
m_registerDefaultResourcesProfiler |
Graphics initialization | StartupInitializeGraphics |
m_initializeGraphicsProfiler |
GL subsystem initialization | StartupInitializeGL |
m_initializeGLProfiler |
Startup kzb file opening | StartupOpenKzb |
m_openKzbProfiler |
Loading threads initialization | StartupInitializeLoadingThreads |
m_initializeLoadingThreadsProfiler |
Metadata registration | StartupRegisterMetadata |
m_registerMetadataProfiler |
Plugins loading | StartupLoadPlugins |
m_loadPluginsProfiler |
Prefabs loading | StartupLoadPrefab |
m_loadPrefabProfiler |
Prefabs instantiation | StartupInstantiatePrefab |
m_instantiatePrefabProfiler |
Prefabs attachment | StartupAttachPrefab |
m_attachPrefabProfiler |
Renderer reset | StartupResetRenderer |
m_resetRendererProfiler |
Runtime assets registration | StartupRegisterRuntimeAssets |
m_registerRuntimeAssetsProfiler |
This table lists the Kanzi main loop task performance profiling categories and profilers that are included in the Profiling build.
Category | Configuration name | Title in HUD | Profiler |
---|---|---|---|
Animations Measures the time spent rendering animations. |
MainLoopAnimation |
Main loop: animation | m_animationProfiler |
Application events handling Measures the time spent gathering and handling events from all available event sources, such as keyboard, mouse, and other available manipulators. |
MainLoopApplicationEvents |
Main loop: application events | m_applicationEventsProfiler |
Application logic updating Measures the time spent inside the user-provided Application::update override. |
MainLoopAppUpdate |
Main loop: application update | m_appUpdateProfiler |
User-provided application logic updating Measures the time spent executing the user-provided update logic callback Application::onUpdate . |
MainLoopUserUpdate |
Main loop: user update | m_userUpdateProfiler |
Graphics events handling Measures the time spent processing events that affect graphics output, such as resizing a window. |
MainLoopGraphicsEvents |
Main loop: graphics events | m_graphicsEventsProfiler |
性能 HUD (Performance HUD) Measures the overhead caused by rendering the information in the 性能 HUD (Performance HUD). |
MainLoopHUD |
Main loop: HUD | m_hudProfiler |
Input events handling Measures the time that the InputManager spends processing input events, such as keyboard and mouse events. |
MainLoopInput |
Main loop: input | m_inputProfiler |
Layout Measures the performance of the layout pass. |
MainLoopLayout |
Main loop: layout | m_layoutProfiler |
Rendering Measures the time spent rendering the screen in Application::renderOverride . |
MainLoopRendering |
Main loop: rendering | m_renderingProfiler |
Resource deployment Measures the time spent processing the asynchronous task deployment queue. |
MainLoopResourceDeployment |
Main loop: resource deployment | m_resourceDeploymentProfiler |
Resource manager update Measures the time that the ResourceManager spends processing load and deployment queues. |
MainLoopResourceManagerUpdate |
Main loop: resource manager update | m_resourceManagerUpdateProfiler |
Task dispatcher Measures the time spent executing tasks added to the task scheduler. |
MainLoopTaskDispatcher |
Main loop: task dispatcher | m_taskDispatcherProfiler |
Task scheduler Measures the time spent executing periodic tasks added to the task dispatcher, such as animations. |
MainLoopTaskScheduler |
Main loop: task scheduler | m_taskSchedulerProfiler |
Glyph cache texture size
當使用文本塊 (Text Block) Kanzi 時,爲字體與字號的每種組合創建圖形緩存紋理。 您可以設置圖形緩存紋理的高度和寬度,以便在圖形緩存紋理填滿時或者爲了優化 Kanzi 應用程序的性能而調整圖形緩存紋理的大小。
Because larger glyph cache textures use more VRAM, try different sizes before you set the final size . The upper limit of the glyph cache texture size depends on the GPU, but usually it is 2048 by 2048 pixels. The default size of the glyph cache texture is 512 by 512 pixels.
Kanzi applies the size of the glyph cache texture to all glyph cache textures.
In application.cfg | GlyphCacheHeight = size |
||
In onConfigure() |
configuration.glyphCacheHeight = size; |
||
Values |
|
||
application.cfg example |
# Sets the glyph cache texture height to 768, and width to 1024 pixels. GlyphCacheHeight = 768 GlyphCacheWidth = 1024 |
||
onConfigure() example |
// Sets the glyph cache texture height to 768, and width to 1024 pixels. configuration.glyphCacheHeight = 768; configuration.glyphCacheWidth = 1024; |
Graphics performance logging
GraphicsLoggingEnabled
You can enable Kanzi to print to the debug console the graphics API calls of your application in the Application::onConfigure()
function, in the application.cfg, or using the command line argument, if your target supports command line arguments.
On the command line use:
-log-graphics
to log the graphics API calls
In application.cfg | GraphicsLoggingEnabled = value |
||||
In onConfigure() |
configuration.graphicsLoggingEnabled = value; |
||||
Values |
|
||||
application.cfg example |
# Enables the logging of the graphics API calls.
|
||||
onConfigure() example |
// Enables the logging of the graphics API calls. configuration.graphicsLoggingEnabled = 1; |
LogOpenGLExtensions
You can enable Kanzi to print to the debug console a list of the graphics-related extensions on application startup.
In application.cfg | LogOpenGLExtensions = value |
||||
In onConfigure() |
configuration.extensionOutputEnabled = value; |
||||
Values |
|
||||
application.cfg example |
# Enables the logging of the graphics-related extensions.
|
||||
onConfigure() example |
// Enables the logging of the graphics-related extensions. configuration.extensionOutputEnabled = 1; |
LogOpenGLInformation
You can enable Kanzi to print to the debug console this graphics-related information on application startup:
- GL vendor
- GL renderer
- GL version
- Shading language version
In application.cfg | LogOpenGLInformation = value |
||||
In onConfigure() |
configuration.informationOutputEnabled = value; |
||||
Values |
|
||||
application.cfg example |
# Enables the logging of the graphics-related information.
|
||||
onConfigure() example |
// Enables the logging of the graphics-related information. configuration.informationOutputEnabled= 1; |
LogSurfaceInformation
You can enable Kanzi to print to the debug console these graphics-related properties on application startup:
- Requested and acquired surface properties. See Surface properties.
- Size of the entire desktop and each display.
- Size of the application window. See Application window position and size.
In application.cfg | LogSurfaceInformation = value |
||||
In onConfigure() |
configuration.propertyOutputEnabled = value; |
||||
Values |
|
||||
application.cfg example |
# Enables the logging of the graphics-related properties.
|
||||
onConfigure() example |
// Enables the logging of the graphics-related properties. configuration.propertyOutputEnabled= 1; |
Graphics library
您可以選擇您 想在
application.cfg 的 Application::onConfigure() 函數中使用 ES 或 GL,還是想使用命令行參數,前提是您的目標支持命令行參數。
在命令行使用:
-gles
以使用 ES-gl
以使用 GL-egl
以使用 EGL-wgl
以使用 WGL
對於 application.cfg | GraphicsBackend = type |
||||
對於 onConfigure() |
configuration.defaultSurfaceProperties.type = type; |
||||
值 |
|
||||
application.cfg 示例 |
# 爲 OpenGLES 2.0 渲染和 EGL 圖形上下文設置表面目標。 GraphicsBackend = GLESGraphicsContextAPI = EGL |
||||
onConfigure() 示例 |
//爲 OpenGLES 2.0 渲染和 EGL 圖形上下文設置表面目標。 configuration.defaultSurfaceProperties.type = KZS_SURFACE_TYPE_ES2_ONLY; configuration.defaultSurfaceProperties.contextApi = KZS_GRAPHICS_CONTEXT_API_EGL; |
Surface properties
Surface properties control the properties of the hardware accelerated graphics surface on which Kanzi renders. They control the relation between image quality and rendering speed. The surface properties you set are considered requests to be matched by the graphics system of the target hardware. Whether a given request is considered an upper bound, a lower bound, or an exact value is platform dependent.
The default values of surface properties are platform dependent. You can get them by calling kzsSurfaceGetDefaultProperties()
.
In application.cfg |
|
||||||||||||||||||||
In onConfigure() |
configuration.defaultSurfaceProperties.bitsStencil = stencil; |
||||||||||||||||||||
Values |
|
||||||||||||||||||||
application.cfg example |
# An example configuration for a typical high-speed rendering application SurfaceBitsStencil = 1 SurfaceBitsDepthBuffer = 16 SurfaceBitsRed = 5 SurfaceBitsGreen = 6 SurfaceBitsBlue = 5 SurfaceBitsAlpha = 0 SurfaceSamplesAntialiasing = 0
# An example configuration for a high image quality application SurfaceBitsStencil = 8 SurfaceBitsDepthBuffer = 24 SurfaceBitsRed = 8 SurfaceBitsGreen = 8 SurfaceBitsBlue = 8 SurfaceBitsAlpha = 8 SurfaceSamplesAntialiasing = 4
|
||||||||||||||||||||
onConfigure() example |
// An example configuration for a typical high-speed rendering application configuration.defaultSurfaceProperties.bitsStencil = 1; configuration.defaultSurfaceProperties.bitsDepthBuffer = 16; configuration.defaultSurfaceProperties.bitsColorR = 5; configuration.defaultSurfaceProperties.bitsColorG = 6; configuration.defaultSurfaceProperties.bitsColorB = 5; configuration.defaultSurfaceProperties.bitsAlpha = 0; configuration.defaultSurfaceProperties.antiAliasing = 0;
// An example configuration for a high image quality application configuration.defaultSurfaceProperties.bitsStencil = 8; configuration.defaultSurfaceProperties.bitsDepthBuffer = 24; configuration.defaultSurfaceProperties.bitsColorR = 8; configuration.defaultSurfaceProperties.bitsColorG = 8; configuration.defaultSurfaceProperties.bitsColorB = 8; configuration.defaultSurfaceProperties.bitsAlpha = 8; configuration.defaultSurfaceProperties.antiAliasing = 4;
|
Application window position and size
You can set the position of the application on the screen relative to the upper-left corner of the screen and the size of the application window in pixels. The default size of the window is 640x480 pixels and center of the device screen.
When you run your Kanzi application in full-screen mode on a system with more than one display, you can set the default display where your Kanzi application window appears.
Note that in order to use the default application display, you have to set the window style of your Kanzi application to full-screen.
To make the application window fixed size, resizable, fullscreen, or without borders, see Application window style.
In application.cfg | WindowX = positionX |
||||||||||||
In onConfigure() |
configuration.defaultWindowProperties.x = positionX; |
||||||||||||
Value |
|
||||||||||||
application.cfg example |
# Set the width to 1280 and height to 720 pixels and place it 100 pixels # from the top and 1 pixel from the left side of the device screen. WindowWidth = 1280 WindowHeight = 720 WindowX = 100 WindowY = 1 # Place the application window in the top-left corner of the device screen. WindowX = 0 WindowY = 0 # Sets the second display as the default display for the full-screen application window. DefaultDisplayIndex = 1 # On Windows, places the application window on top of other windows. WindowOrder = 0 |
||||||||||||
onConfigure() example |
// Set the width to 1280 and height to 720 pixels and place it 100 pixels // from the top and 1 pixel from the left side of the device screen. configuration.defaultWindowProperties.width = 1280; configuration.defaultWindowProperties.height = 720; configuration.defaultWindowProperties.x = 100; configuration.defaultWindowProperties.y = 1; // Place the application window in the top-left corner of the device screen. configuration.defaultWindowProperties.x = 0; configuration.defaultWindowProperties.y = 0; // Sets the second display as the default display for the full-screen application window. configuration.defaultWindowProperties.defaultDisplayIndex = 1; // On Windows, places the application window on top of other windows. configuration.defaultWindowProperties.order = 0; |
Application window style
You can set the style of the window of your Kanzi application. Besides the default window with a border that users can resize, you can set your Kanzi application to launch in a window without a border, in a window of fixed size, and in a window that occupies the entire device screen.
To set the position and size of the application window, see Application window position and size.
In application.cfg | WindowStyle = "style" |
||
In onConfigure() |
configuration.defaultWindowProperties.style = style; |
||
Value |
|
||
application.cfg example |
# Launch the application in a window that occupies the whole screen of the device. WindowStyle = "fullscreen"
|
||
onConfigure() example |
// Launch the application in a window that occupies the whole screen of the device.
configuration.defaultWindowProperties.style =
|
Input handling and screen transformation
You can define how your application handles touch and pointer input, and configure the orientation of your application screen. When you run your application on a device, you can set whether the application reacts to the pointer of the device, uses a touch screen, or both.
InputTransform
You can set the transformation matrix of the application screen. For example, use this to rotate the application screen.
In application.cfg | InputTransform = transformation |
||
In onConfigure() |
configuration.defaultEventSourceProperties.transformation = transformation; |
||
Values |
|
||
application.cfg example |
# Rotate an application screen sized 1280x720 pixels by 180 degrees. InputTransform = -1, 0, 0, 0, -1, 0, 1280, 720, 1
|
||
onConfigure() example |
// Rotate an application screen sized 1280x720 pixels by 180 degrees. configuration.defaultEventSourceProperties.transformation = Matrix3x3::createTranslation(1280, 720) * Matrix3x3::createRotationInDegrees(180.0f); |
||
The examples use this equation to calculate the transformation matrix: |
InputTranslation
You can set how Kanzi translates pointer and touch events.
In application.cfg | InputTranslation = translation |
||
In onConfigure() |
configuration.defaultEventSourceProperties.translation = translation; |
||
Values |
|
||
application.cfg example |
# Translate pointer events to touch events. InputTranslation = PointerToTouch
|
||
onConfigure() example |
// Translate pointer events to touch events. configuration.defaultEventSourceProperties.translation = KZS_INPUT_TRANSLATE_POINTER_TO_TOUCH; |
InputDiscardPointer
You can set whether the application reacts to the pointer of the device.
In application.cfg | InputDiscardPointer = value |
||||||
In onConfigure() |
configuration.defaultEventSourceProperties.discardPointerEvents = value; |
||||||
Values |
|
||||||
application.cfg example |
# Ignore pointer input. InputDiscardPointer = 1
|
||||||
onConfigure() example |
// Ignore pointer input. configuration.defaultEventSourceProperties.discardPointerEvents = 1; |
InputDiscardTouch
You can set whether the application reacts to touch input.
In application.cfg | InputDiscardTouch = value |
||||||
In onConfigure() |
configuration.defaultEventSourceProperties.discardTouchEvents = value; |
||||||
Values |
|
||||||
application.cfg example |
# Ignore touch input. InputDiscardTouch = 1
|
||||||
onConfigure() example |
// Ignore touch input. configuration.defaultEventSourceProperties.discardTouchEvents = 1; |
Input event devices on Linux
如果本地窗口系統不提供輸入設備處理,您可以在 Linux 端口配置 Kanzi 聽從的輸入事件設備。 This way Kanzi can listen to events directly from the input event devices provided by the operating system.
For example, in Vivante fbdev and WSEGL ports you can configure the input event devices that Kanzi listens to. In X11 and Wayland ports the native windowing system handles input devices.
Kanzi by default listens to all input event devices named eventN, where N is an integer, in the /dev/input directory.
In application.cfg | InputEventDevice = path |
||
In onConfigure() |
configuration.defaultEventSourceProperties.inputEventDevice = path; |
||
Values |
|
||
application.cfg example |
# Listens to events from one input event device. InputEventDevice = "/dev/input/event1" # Listens to events from two input event devices. InputEventDevice = "/dev/input/event0;/dev/input/event1" # Disables listening to events from input event devices. InputEventDevice = "none" |
||
onConfigure() example |
// Listens to events from one input event device. configuration.defaultEventSourceProperties.inputEventDevice = "/dev/input/event1"; // Listens to events from two input event devices. configuration.defaultEventSourceProperties.inputEventDevice = "/dev/input/event0;/dev/input/event1"; // Disables listening to events from input event devices. configuration.defaultEventSourceProperties.inputEventDevice = "none"; |