qtcapture.cpp
上传用户:center1979
上传日期:2022-07-26
资源大小:50633k
文件大小:2k
源码类别:

OpenGL

开发平台:

Visual C++

  1. // qtcapture.cpp
  2. //
  3. // Copyright (C) 2001, Chris Laurel <claurel@shatters.net>
  4. //
  5. // This program is free software; you can redistribute it and/or
  6. // modify it under the terms of the GNU General Public License
  7. // as published by the Free Software Foundation; either version 2
  8. // of the License, or (at your option) any later version.
  9. #include <cmath>
  10. #include "../src/celengine/gl.h"
  11. #include "../src/celengine/glext.h"
  12. #include <celutil/debug.h>
  13. #include "qtcapture.h"
  14. using namespace std;
  15. QTCapture::QTCapture() :
  16.     width(-1),
  17.     height(-1),
  18.     frameRate(30.0f),
  19.     frameCounter(0),
  20.     capturing(false)
  21. {
  22. }
  23. QTCapture::~QTCapture()
  24. {
  25.     cleanup();
  26. }
  27. bool QTCapture::start(const string& filename,
  28.                        int w, int h,
  29.                        float fps)
  30. {
  31.     if (capturing)
  32.         return false;
  33.     width = w;
  34.     height = h;
  35.     frameRate = fps;
  36.     capturing = true;
  37.     frameCounter = 0;
  38.     return true;
  39. }
  40. bool QTCapture::end()
  41. {
  42.     capturing = false;
  43.     cleanup();
  44.     return true;
  45. }
  46. bool QTCapture::captureFrame()
  47. {
  48.     if (!capturing)
  49.         return false;
  50.     // Get the dimensions of the current viewport
  51.     GLint viewport[4];
  52.     glGetIntegerv(GL_VIEWPORT, viewport);
  53.     int x = viewport[0] + (viewport[2] - width) / 2;
  54.     int y = viewport[1] + (viewport[3] - height) / 2;
  55.     frameCounter++;
  56.     return true;
  57. }
  58. void QTCapture::cleanup()
  59. {
  60. }
  61. int QTCapture::getWidth() const
  62. {
  63.     return width;
  64. }
  65. int QTCapture::getHeight() const
  66. {
  67.     return height;
  68. }
  69. float QTCapture::getFrameRate() const
  70. {
  71.     return frameRate;
  72. }
  73. int QTCapture::getFrameCount() const
  74. {
  75.     return frameCounter;
  76. }
  77. void QTCapture::setAspectRatio(int aspectNumerator, int aspectDenominator)
  78. {
  79. }
  80. void QTCapture::setQuality(float)
  81. {
  82. }
  83. void QTCapture::recordingStatus(bool started)
  84. {
  85. }