Mercurial > hg > orthanc-stone
annotate OrthancStone/Sources/OpenGL/OpenGLTexture.cpp @ 2047:0b596428e60c deep-learning
added OpenGLTexture::GetFormat()
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 06 Mar 2023 11:00:55 +0100 |
parents | 98b44468332e |
children | a05b03f45289 |
rev | line source |
---|---|
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
1 /** |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
2 * Stone of Orthanc |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
4 * Department, University Hospital of Liege, Belgium |
1871
7053b8a0aaec
upgrade to year 2022
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1870
diff
changeset
|
5 * Copyright (C) 2017-2022 Osimis S.A., Belgium |
7053b8a0aaec
upgrade to year 2022
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1870
diff
changeset
|
6 * Copyright (C) 2021-2022 Sebastien Jodogne, ICTEAM UCLouvain, Belgium |
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
7 * |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
8 * This program is free software: you can redistribute it and/or |
1598
8563ea5d8ae4
relicensing some files, cf. osimis bm26 and chu agreement on 2020-05-20
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1596
diff
changeset
|
9 * modify it under the terms of the GNU Lesser General Public License |
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
10 * as published by the Free Software Foundation, either version 3 of |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
11 * the License, or (at your option) any later version. |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
12 * |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
13 * This program is distributed in the hope that it will be useful, but |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
14 * WITHOUT ANY WARRANTY; without even the implied warranty of |
1598
8563ea5d8ae4
relicensing some files, cf. osimis bm26 and chu agreement on 2020-05-20
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1596
diff
changeset
|
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
8563ea5d8ae4
relicensing some files, cf. osimis bm26 and chu agreement on 2020-05-20
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1596
diff
changeset
|
16 * Lesser General Public License for more details. |
1596
4fb8fdf03314
removed annoying whitespace
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1564
diff
changeset
|
17 * |
1598
8563ea5d8ae4
relicensing some files, cf. osimis bm26 and chu agreement on 2020-05-20
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1596
diff
changeset
|
18 * You should have received a copy of the GNU Lesser General Public |
8563ea5d8ae4
relicensing some files, cf. osimis bm26 and chu agreement on 2020-05-20
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1596
diff
changeset
|
19 * License along with this program. If not, see |
8563ea5d8ae4
relicensing some files, cf. osimis bm26 and chu agreement on 2020-05-20
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1596
diff
changeset
|
20 * <http://www.gnu.org/licenses/>. |
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
21 **/ |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
22 |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
23 |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
24 #include "OpenGLTexture.h" |
947
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
25 #include "IOpenGLContext.h" |
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
26 |
2032
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
27 #include <Images/Image.h> |
1624 | 28 #include <Logging.h> |
1455
30deba7bc8e2
simplifying include_directories
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1270
diff
changeset
|
29 #include <OrthancException.h> |
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
30 |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
31 namespace OrthancStone |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
32 { |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
33 namespace OpenGL |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
34 { |
2032
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
35 OpenGLTexture::OpenGLTexture(OpenGL::IOpenGLContext& context) : |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
36 texture_(0), |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
37 width_(0), |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
38 height_(0), |
2047
0b596428e60c
added OpenGLTexture::GetFormat()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2046
diff
changeset
|
39 format_(Orthanc::PixelFormat_Grayscale8), |
2032
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
40 context_(context) |
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
41 { |
947
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
42 if (!context_.IsContextLost()) |
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
43 { |
947
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
44 // Generate a texture object |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
45 glGenTextures(1, &texture_); |
2045
e5c812a36746
added support of WebGL2 in WebAssemblyOpenGLContext
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2044
diff
changeset
|
46 ORTHANC_OPENGL_CHECK("glGenTextures()"); |
e5c812a36746
added support of WebGL2 in WebAssemblyOpenGLContext
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2044
diff
changeset
|
47 |
947
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
48 if (texture_ == 0) |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
49 { |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
50 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError, |
2032
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
51 "Cannot create an OpenGL texture"); |
947
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
52 } |
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
53 } |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
54 } |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
55 |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
56 OpenGLTexture::~OpenGLTexture() |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
57 { |
947
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
58 try |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
59 { |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
60 if (!context_.IsContextLost()) |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
61 { |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
62 assert(texture_ != 0); |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
63 ORTHANC_OPENGL_TRACE_CURRENT_CONTEXT("About to call glDeleteTextures"); |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
64 glDeleteTextures(1, &texture_); |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
65 } |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
66 } |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
67 catch (const Orthanc::OrthancException& e) |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
68 { |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
69 if (e.HasDetails()) |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
70 { |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
71 LOG(ERROR) << "OrthancException in ~OpenGLTexture: " << e.What() << " Details: " << e.GetDetails(); |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
72 } |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
73 else |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
74 { |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
75 LOG(ERROR) << "OrthancException in ~OpenGLTexture: " << e.What(); |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
76 } |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
77 } |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
78 catch (const std::exception& e) |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
79 { |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
80 LOG(ERROR) << "std::exception in ~OpenGLTexture: " << e.what(); |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
81 } |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
82 catch (...) |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
83 { |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
84 LOG(ERROR) << "Unknown exception in ~OpenGLTexture"; |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
85 } |
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
86 } |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
87 |
2034 | 88 void OpenGLTexture::Setup(Orthanc::PixelFormat format, |
89 unsigned int width, | |
90 unsigned int height, | |
91 bool isLinearInterpolation, | |
92 const void* data) | |
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
93 { |
2034 | 94 if (context_.IsContextLost()) |
95 { | |
96 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError, | |
97 "OpenGL context has been lost"); | |
98 } | |
99 else | |
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
100 { |
947
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
101 glPixelStorei(GL_UNPACK_ALIGNMENT, 1); // Disable byte-alignment restriction |
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
102 |
947
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
103 // Bind it |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
104 glActiveTexture(GL_TEXTURE0); |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
105 glBindTexture(GL_TEXTURE_2D, texture_); |
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
106 |
2032
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
107 GLenum sourceFormat, internalFormat, pixelType; |
2037
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
108 ConvertToOpenGLFormats(sourceFormat, internalFormat, pixelType, format); |
947
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
109 |
2047
0b596428e60c
added OpenGLTexture::GetFormat()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2046
diff
changeset
|
110 format_ = format; |
2034 | 111 width_ = width; |
112 height_ = height; | |
947
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
113 |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
114 GLint interpolation = (isLinearInterpolation ? GL_LINEAR : GL_NEAREST); |
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
115 |
947
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
116 // Load the texture from the image buffer |
2034 | 117 glTexImage2D(GL_TEXTURE_2D, 0, internalFormat, width, height, |
118 0, sourceFormat, pixelType, data); | |
2046 | 119 ORTHANC_OPENGL_CHECK("glTexImage2D()"); |
2036
444527d34647
sanity check in textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2035
diff
changeset
|
120 |
2043 | 121 #if !defined(__EMSCRIPTEN__) |
2046 | 122 /** |
123 * glGetTexLevelParameteriv() was introduced in OpenGL ES 3.1, | |
124 * but WebGL 2 only supports OpenGL ES 3.0, so it is not | |
125 * available in WebAssembly: | |
126 * https://registry.khronos.org/OpenGL-Refpages/es3.1/html/glGetTexLevelParameter.xhtml | |
127 **/ | |
2036
444527d34647
sanity check in textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2035
diff
changeset
|
128 GLint w, h; |
444527d34647
sanity check in textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2035
diff
changeset
|
129 glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &w); |
444527d34647
sanity check in textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2035
diff
changeset
|
130 glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &h); |
444527d34647
sanity check in textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2035
diff
changeset
|
131 if (width != static_cast<unsigned int>(w) || |
444527d34647
sanity check in textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2035
diff
changeset
|
132 height != static_cast<unsigned int>(h)) |
444527d34647
sanity check in textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2035
diff
changeset
|
133 { |
444527d34647
sanity check in textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2035
diff
changeset
|
134 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError, |
444527d34647
sanity check in textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2035
diff
changeset
|
135 "Your GPU cannot create a texture of size " + |
444527d34647
sanity check in textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2035
diff
changeset
|
136 boost::lexical_cast<std::string>(width) + " x " + |
444527d34647
sanity check in textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2035
diff
changeset
|
137 boost::lexical_cast<std::string>(height)); |
444527d34647
sanity check in textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2035
diff
changeset
|
138 } |
2043 | 139 #endif |
2036
444527d34647
sanity check in textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2035
diff
changeset
|
140 |
947
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
141 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, interpolation); |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
142 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, interpolation); |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
143 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
144 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
145 } |
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
146 } |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
147 |
2034 | 148 void OpenGLTexture::Load(const Orthanc::ImageAccessor& image, |
149 bool isLinearInterpolation) | |
150 { | |
151 if (image.GetPitch() != image.GetBytesPerPixel() * image.GetWidth()) | |
152 { | |
153 throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented, | |
154 "Pitch is not the same as the row size"); | |
155 } | |
156 else | |
157 { | |
158 Setup(image.GetFormat(), image.GetWidth(), image.GetHeight(), | |
159 isLinearInterpolation, image.GetConstBuffer()); | |
160 } | |
161 } | |
162 | |
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
163 |
2039 | 164 void OpenGLTexture::Bind(GLint location) const |
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
165 { |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
166 glActiveTexture(GL_TEXTURE0); |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
167 glBindTexture(GL_TEXTURE_2D, texture_); |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
168 glUniform1i(location, 0 /* texture unit */); |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
169 } |
2032
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
170 |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
171 |
2042
0fa4c0ca429d
added OpenGLTexture::BindAsTextureUnit()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2039
diff
changeset
|
172 void OpenGLTexture::BindAsTextureUnit(GLint location, |
0fa4c0ca429d
added OpenGLTexture::BindAsTextureUnit()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2039
diff
changeset
|
173 unsigned int unit) const |
0fa4c0ca429d
added OpenGLTexture::BindAsTextureUnit()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2039
diff
changeset
|
174 { |
0fa4c0ca429d
added OpenGLTexture::BindAsTextureUnit()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2039
diff
changeset
|
175 if (unit >= 32) |
0fa4c0ca429d
added OpenGLTexture::BindAsTextureUnit()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2039
diff
changeset
|
176 { |
0fa4c0ca429d
added OpenGLTexture::BindAsTextureUnit()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2039
diff
changeset
|
177 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); |
0fa4c0ca429d
added OpenGLTexture::BindAsTextureUnit()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2039
diff
changeset
|
178 } |
0fa4c0ca429d
added OpenGLTexture::BindAsTextureUnit()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2039
diff
changeset
|
179 |
0fa4c0ca429d
added OpenGLTexture::BindAsTextureUnit()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2039
diff
changeset
|
180 assert(GL_TEXTURE0 + 1 == GL_TEXTURE1 && |
0fa4c0ca429d
added OpenGLTexture::BindAsTextureUnit()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2039
diff
changeset
|
181 GL_TEXTURE0 + 31 == GL_TEXTURE31); |
0fa4c0ca429d
added OpenGLTexture::BindAsTextureUnit()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2039
diff
changeset
|
182 |
0fa4c0ca429d
added OpenGLTexture::BindAsTextureUnit()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2039
diff
changeset
|
183 glActiveTexture(GL_TEXTURE0 + unit); |
0fa4c0ca429d
added OpenGLTexture::BindAsTextureUnit()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2039
diff
changeset
|
184 glBindTexture(GL_TEXTURE_2D, texture_); |
0fa4c0ca429d
added OpenGLTexture::BindAsTextureUnit()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2039
diff
changeset
|
185 glUniform1i(location, unit /* texture unit */); |
0fa4c0ca429d
added OpenGLTexture::BindAsTextureUnit()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2039
diff
changeset
|
186 } |
0fa4c0ca429d
added OpenGLTexture::BindAsTextureUnit()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2039
diff
changeset
|
187 |
0fa4c0ca429d
added OpenGLTexture::BindAsTextureUnit()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2039
diff
changeset
|
188 |
2039 | 189 Orthanc::ImageAccessor* OpenGLTexture::Download(Orthanc::PixelFormat format) const |
2032
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
190 { |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
191 if (context_.IsContextLost()) |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
192 { |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
193 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError, |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
194 "OpenGL context is lost"); |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
195 } |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
196 |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
197 std::unique_ptr<Orthanc::ImageAccessor> target(new Orthanc::Image(format, width_, height_, true)); |
2033
23b0a42eea85
added support for floating-point images in OpenGLTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2032
diff
changeset
|
198 assert(target->GetPitch() == width_ * Orthanc::GetBytesPerPixel(format)); |
2032
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
199 |
2044 | 200 #if defined(__EMSCRIPTEN__) |
201 /** | |
202 * The "glGetTexImage()" is unavailable in WebGL, it is | |
203 * necessary to use a framebuffer: | |
204 * https://stackoverflow.com/a/15064957 | |
205 **/ | |
206 throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented); | |
207 | |
208 #else | |
2032
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
209 glBindTexture(GL_TEXTURE_2D, texture_); |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
210 |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
211 switch (format) |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
212 { |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
213 case Orthanc::PixelFormat_Grayscale8: |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
214 glGetTexImage(GL_TEXTURE_2D, 0 /* base level */, GL_RED, GL_UNSIGNED_BYTE, target->GetBuffer()); |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
215 break; |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
216 |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
217 case Orthanc::PixelFormat_RGB24: |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
218 glGetTexImage(GL_TEXTURE_2D, 0 /* base level */, GL_RGB, GL_UNSIGNED_BYTE, target->GetBuffer()); |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
219 break; |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
220 |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
221 case Orthanc::PixelFormat_RGBA32: |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
222 glGetTexImage(GL_TEXTURE_2D, 0 /* base level */, GL_RGBA, GL_UNSIGNED_BYTE, target->GetBuffer()); |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
223 break; |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
224 |
2033
23b0a42eea85
added support for floating-point images in OpenGLTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2032
diff
changeset
|
225 case Orthanc::PixelFormat_Float32: |
23b0a42eea85
added support for floating-point images in OpenGLTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2032
diff
changeset
|
226 glGetTexImage(GL_TEXTURE_2D, 0 /* base level */, GL_RED, GL_FLOAT, target->GetBuffer()); |
23b0a42eea85
added support for floating-point images in OpenGLTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2032
diff
changeset
|
227 break; |
23b0a42eea85
added support for floating-point images in OpenGLTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2032
diff
changeset
|
228 |
2032
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
229 default: |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
230 throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented); |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
231 } |
2044 | 232 #endif |
2032
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
233 |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
234 return target.release(); |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
235 } |
2035
a73a8415780f
added OpenGLTexture::SetClampingToZero()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2034
diff
changeset
|
236 |
a73a8415780f
added OpenGLTexture::SetClampingToZero()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2034
diff
changeset
|
237 |
a73a8415780f
added OpenGLTexture::SetClampingToZero()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2034
diff
changeset
|
238 void OpenGLTexture::SetClampingToZero() |
a73a8415780f
added OpenGLTexture::SetClampingToZero()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2034
diff
changeset
|
239 { |
a73a8415780f
added OpenGLTexture::SetClampingToZero()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2034
diff
changeset
|
240 glBindTexture(GL_TEXTURE_2D, texture_); |
a73a8415780f
added OpenGLTexture::SetClampingToZero()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2034
diff
changeset
|
241 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER); |
a73a8415780f
added OpenGLTexture::SetClampingToZero()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2034
diff
changeset
|
242 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER); |
a73a8415780f
added OpenGLTexture::SetClampingToZero()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2034
diff
changeset
|
243 |
a73a8415780f
added OpenGLTexture::SetClampingToZero()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2034
diff
changeset
|
244 GLfloat colorfv[4] = { 0, 0, 0, 0 }; |
a73a8415780f
added OpenGLTexture::SetClampingToZero()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2034
diff
changeset
|
245 glTextureParameterfv(texture_, GL_TEXTURE_BORDER_COLOR, colorfv); |
a73a8415780f
added OpenGLTexture::SetClampingToZero()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2034
diff
changeset
|
246 } |
2037
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
247 |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
248 |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
249 void OpenGLTexture::ConvertToOpenGLFormats(GLenum& sourceFormat, |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
250 GLenum& internalFormat, |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
251 GLenum& pixelType, |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
252 Orthanc::PixelFormat format) |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
253 { |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
254 switch (format) |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
255 { |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
256 case Orthanc::PixelFormat_Grayscale8: |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
257 sourceFormat = GL_RED; |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
258 internalFormat = GL_RED; |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
259 pixelType = GL_UNSIGNED_BYTE; |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
260 break; |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
261 |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
262 case Orthanc::PixelFormat_RGB24: |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
263 sourceFormat = GL_RGB; |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
264 internalFormat = GL_RGB; |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
265 pixelType = GL_UNSIGNED_BYTE; |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
266 break; |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
267 |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
268 case Orthanc::PixelFormat_RGBA32: |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
269 sourceFormat = GL_RGBA; |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
270 internalFormat = GL_RGBA; |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
271 pixelType = GL_UNSIGNED_BYTE; |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
272 break; |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
273 |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
274 case Orthanc::PixelFormat_Float32: |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
275 sourceFormat = GL_RED; |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
276 internalFormat = GL_R32F; // Don't use "GL_RED" here, as it clamps to [0,1] |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
277 pixelType = GL_FLOAT; |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
278 break; |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
279 |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
280 default: |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
281 throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented, |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
282 "No support for this format in OpenGL textures: " + |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
283 std::string(EnumerationToString(format))); |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
284 } |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
285 } |
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
286 } |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
287 } |