【问题标题】:How get screen dimension on Android SDL2.0 NDK C?如何在 Android SDL2.0 NDK C 上获取屏幕尺寸?
【发布时间】:2015-05-22 08:31:05
【问题描述】:

在我的 SDL 程序中,我必须获取屏幕尺寸。 我该怎么做? 在安卓上我无法使用

error: initializer element is not constant
 int height = Android_ScreenHeight;

可以在ndk中初始化吗?

【问题讨论】:

    标签: android c android-ndk sdl-2


    【解决方案1】:

    您可以获得屏幕缓冲区大小:

    void android_main(struct android_app* state) {
      ...
    
      ANativeWindow* window = state->window;
      ANativeWindow_Buffer buffer;
    
      // Try lock buffer
      if (ANativeWindow_lock(window, &buffer, 0) < 0)
        return;
    
      LOGI("buffer info: width = %d height = %d", buffer.width, buffer.height);
    
      // Unlock buffer
      ANativeWindow_unlockAndPost(window);
    
      ...
    }
    

    我知道你也可以通过其他 NDK 的东西来获取屏幕信息,但这很有效!

    【讨论】:

    • 这不是 SDL 吗?我必须编写自己的主要功能吗?不是 int main( int argc, char * args[] ) 我必须将这个新的 main 函数设置为活动吗?
    • 嗯,我假设您在“纯”ndk 中(定义您自己的“主要”功能)。如果您使用 C 作为 java 的库,则有点不同,但主要是在某处获取 android_app* 状态。然后你会得到几乎所有你想要的东西。或者您可以通过 Java 本机接口 (JNI) 调用 Java。但这并不方便,而且相当丑陋。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    • 2014-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多