#pragma once #include "../frames/InputFrameMailbox.h" #include "GLExtensions.h" #include class InputFrameTexture { public: InputFrameTexture() = default; InputFrameTexture(const InputFrameTexture&) = delete; InputFrameTexture& operator=(const InputFrameTexture&) = delete; ~InputFrameTexture(); GLuint PollAndUpload(InputFrameMailbox* mailbox); GLuint Texture() const { return mTexture; } uint64_t UploadedFrames() const { return mUploadedFrames; } uint64_t UploadMisses() const { return mUploadMisses; } void ShutdownGl(); private: bool EnsureTexture(const InputFrame& frame); GLuint mTexture = 0; unsigned mWidth = 0; unsigned mHeight = 0; uint64_t mUploadedFrames = 0; uint64_t mUploadMisses = 0; };