none
Медленное получение изображений окон RRS feed

  • Общие обсуждения

  • Доброго дня.
    На текущий момент, я разрабатываю приложение, с использованием java, JNI и openGL и у меня возникла необходимость передавать в это приложение изображения нескольких произвольно выбираемых окон в качестве текстур.
    Сейчас, для подобной передачи, я использую следующие действия:
    1) Получаю hwnd и hdc выбранного окна.
    2) Используя hdc и bitblt получаю массив байт, в котором записаны цвета пикселей, для данного окна.
    3) Загружаю данный массив в текстуру.

    Этот способ работает, но он медленный, даже для одного единственного окна.

    Соответственно, вопрос в том, нет ли более быстрого способа делать эту передачу?
    Я знаю, что в C++ контекст opengl прикрепляется к hdc создаваемого окна, через wglCreateContext(hDC). И подозреваю, что должен быть способ, скопировать изображение из hdc выбранного окна, в hdc окна с opengl таким образом, чтобы opengl получил доступ к результату этого копирования в пиксельном буффере.
    Но, пока что, я так и не нашёл этого способа.
    Возможно, вы можете подсказать мне какое-либо решение?

Все ответы

  • Окна видимые или они могут быть свернутыми/перекрытыми другими окнами? Возможно, Desktop Duplication API поможет получить изображение быстрее, правда он только экран целиком позволяет получать, но можно вырезать необходимое окно.    
  • Благодарю за подсказку.
    Окна видимые, могут быть перекрытыми, не могут быть свёрнутыми, так что предложенный метод мне вряд-ли подойдёт, но я попробую изучить его подробнее.