Mercurial > hg > orthanc-stone
annotate OrthancStone/Sources/OpenGL/OpenGLTexture.cpp @ 2045:e5c812a36746 deep-learning
added support of WebGL2 in WebAssemblyOpenGLContext
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Sun, 05 Mar 2023 17:06:31 +0100 |
parents | c9dadbe7c7b0 |
children | 98b44468332e |
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), |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
39 context_(context) |
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
40 { |
947
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
41 if (!context_.IsContextLost()) |
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
42 { |
947
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
43 // 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
|
44 glGenTextures(1, &texture_); |
2045
e5c812a36746
added support of WebGL2 in WebAssemblyOpenGLContext
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2044
diff
changeset
|
45 ORTHANC_OPENGL_CHECK("glGenTextures()"); |
e5c812a36746
added support of WebGL2 in WebAssemblyOpenGLContext
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2044
diff
changeset
|
46 |
947
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
47 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
|
48 { |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
49 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError, |
2032
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
50 "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
|
51 } |
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
52 } |
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 OpenGLTexture::~OpenGLTexture() |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
56 { |
947
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
57 try |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
58 { |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
59 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
|
60 { |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
61 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
|
62 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
|
63 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
|
64 } |
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 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
|
67 { |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
68 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
|
69 { |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
70 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
|
71 } |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
72 else |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
73 { |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
74 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
|
75 } |
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 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
|
78 { |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
79 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
|
80 } |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
81 catch (...) |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
82 { |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
83 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
|
84 } |
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
85 } |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
86 |
2034 | 87 void OpenGLTexture::Setup(Orthanc::PixelFormat format, |
88 unsigned int width, | |
89 unsigned int height, | |
90 bool isLinearInterpolation, | |
91 const void* data) | |
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
92 { |
2034 | 93 if (context_.IsContextLost()) |
94 { | |
95 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError, | |
96 "OpenGL context has been lost"); | |
97 } | |
98 else | |
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
99 { |
947
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
100 glPixelStorei(GL_UNPACK_ALIGNMENT, 1); // Disable byte-alignment restriction |
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
101 |
947
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
102 // Bind it |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
103 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
|
104 glBindTexture(GL_TEXTURE_2D, texture_); |
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
105 |
2032
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
106 GLenum sourceFormat, internalFormat, pixelType; |
2037
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
107 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
|
108 |
2034 | 109 width_ = width; |
110 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
|
111 |
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
112 GLint interpolation = (isLinearInterpolation ? GL_LINEAR : GL_NEAREST); |
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
113 |
947
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
114 // Load the texture from the image buffer |
2034 | 115 glTexImage2D(GL_TEXTURE_2D, 0, internalFormat, width, height, |
116 0, sourceFormat, pixelType, data); | |
2036
444527d34647
sanity check in textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2035
diff
changeset
|
117 |
2043 | 118 #if !defined(__EMSCRIPTEN__) |
2044 | 119 // glGetTexLevelParameteriv() is not implemented yet in Emscripten 3.1.7 |
2036
444527d34647
sanity check in textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2035
diff
changeset
|
120 GLint w, h; |
444527d34647
sanity check in textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2035
diff
changeset
|
121 glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH, &w); |
444527d34647
sanity check in textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2035
diff
changeset
|
122 glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT, &h); |
444527d34647
sanity check in textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2035
diff
changeset
|
123 if (width != static_cast<unsigned int>(w) || |
444527d34647
sanity check in textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2035
diff
changeset
|
124 height != static_cast<unsigned int>(h)) |
444527d34647
sanity check in textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2035
diff
changeset
|
125 { |
444527d34647
sanity check in textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2035
diff
changeset
|
126 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError, |
444527d34647
sanity check in textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2035
diff
changeset
|
127 "Your GPU cannot create a texture of size " + |
444527d34647
sanity check in textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2035
diff
changeset
|
128 boost::lexical_cast<std::string>(width) + " x " + |
444527d34647
sanity check in textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2035
diff
changeset
|
129 boost::lexical_cast<std::string>(height)); |
444527d34647
sanity check in textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2035
diff
changeset
|
130 } |
2043 | 131 #endif |
2036
444527d34647
sanity check in textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2035
diff
changeset
|
132 |
947
1091b2adeb5a
Fixed animation frame stopping when returning false + big work on the OpenGL
Benjamin Golinvaux <bgo@osimis.io>
parents:
616
diff
changeset
|
133 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
|
134 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
|
135 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
|
136 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
|
137 } |
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
138 } |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
139 |
2034 | 140 void OpenGLTexture::Load(const Orthanc::ImageAccessor& image, |
141 bool isLinearInterpolation) | |
142 { | |
143 if (image.GetPitch() != image.GetBytesPerPixel() * image.GetWidth()) | |
144 { | |
145 throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented, | |
146 "Pitch is not the same as the row size"); | |
147 } | |
148 else | |
149 { | |
150 Setup(image.GetFormat(), image.GetWidth(), image.GetHeight(), | |
151 isLinearInterpolation, image.GetConstBuffer()); | |
152 } | |
153 } | |
154 | |
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
155 |
2039 | 156 void OpenGLTexture::Bind(GLint location) const |
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
157 { |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
158 glActiveTexture(GL_TEXTURE0); |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
159 glBindTexture(GL_TEXTURE_2D, texture_); |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
160 glUniform1i(location, 0 /* texture unit */); |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
161 } |
2032
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
162 |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
163 |
2042
0fa4c0ca429d
added OpenGLTexture::BindAsTextureUnit()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2039
diff
changeset
|
164 void OpenGLTexture::BindAsTextureUnit(GLint location, |
0fa4c0ca429d
added OpenGLTexture::BindAsTextureUnit()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2039
diff
changeset
|
165 unsigned int unit) const |
0fa4c0ca429d
added OpenGLTexture::BindAsTextureUnit()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2039
diff
changeset
|
166 { |
0fa4c0ca429d
added OpenGLTexture::BindAsTextureUnit()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2039
diff
changeset
|
167 if (unit >= 32) |
0fa4c0ca429d
added OpenGLTexture::BindAsTextureUnit()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2039
diff
changeset
|
168 { |
0fa4c0ca429d
added OpenGLTexture::BindAsTextureUnit()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2039
diff
changeset
|
169 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); |
0fa4c0ca429d
added OpenGLTexture::BindAsTextureUnit()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2039
diff
changeset
|
170 } |
0fa4c0ca429d
added OpenGLTexture::BindAsTextureUnit()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2039
diff
changeset
|
171 |
0fa4c0ca429d
added OpenGLTexture::BindAsTextureUnit()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2039
diff
changeset
|
172 assert(GL_TEXTURE0 + 1 == GL_TEXTURE1 && |
0fa4c0ca429d
added OpenGLTexture::BindAsTextureUnit()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2039
diff
changeset
|
173 GL_TEXTURE0 + 31 == GL_TEXTURE31); |
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 glActiveTexture(GL_TEXTURE0 + unit); |
0fa4c0ca429d
added OpenGLTexture::BindAsTextureUnit()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2039
diff
changeset
|
176 glBindTexture(GL_TEXTURE_2D, texture_); |
0fa4c0ca429d
added OpenGLTexture::BindAsTextureUnit()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2039
diff
changeset
|
177 glUniform1i(location, unit /* texture unit */); |
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 |
2039 | 181 Orthanc::ImageAccessor* OpenGLTexture::Download(Orthanc::PixelFormat format) const |
2032
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
182 { |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
183 if (context_.IsContextLost()) |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
184 { |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
185 throw Orthanc::OrthancException(Orthanc::ErrorCode_InternalError, |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
186 "OpenGL context is lost"); |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
187 } |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
188 |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
189 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
|
190 assert(target->GetPitch() == width_ * Orthanc::GetBytesPerPixel(format)); |
2032
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
191 |
2044 | 192 #if defined(__EMSCRIPTEN__) |
193 /** | |
194 * The "glGetTexImage()" is unavailable in WebGL, it is | |
195 * necessary to use a framebuffer: | |
196 * https://stackoverflow.com/a/15064957 | |
197 **/ | |
198 throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented); | |
199 | |
200 #else | |
2032
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
201 glBindTexture(GL_TEXTURE_2D, texture_); |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
202 |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
203 switch (format) |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
204 { |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
205 case Orthanc::PixelFormat_Grayscale8: |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
206 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
|
207 break; |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
208 |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
209 case Orthanc::PixelFormat_RGB24: |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
210 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
|
211 break; |
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_RGBA32: |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
214 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
|
215 break; |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
216 |
2033
23b0a42eea85
added support for floating-point images in OpenGLTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2032
diff
changeset
|
217 case Orthanc::PixelFormat_Float32: |
23b0a42eea85
added support for floating-point images in OpenGLTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2032
diff
changeset
|
218 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
|
219 break; |
23b0a42eea85
added support for floating-point images in OpenGLTexture
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2032
diff
changeset
|
220 |
2032
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
221 default: |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
222 throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented); |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
223 } |
2044 | 224 #endif |
2032
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
225 |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
226 return target.release(); |
d10bab7cc396
added OpenGLTexture::Download()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
1871
diff
changeset
|
227 } |
2035
a73a8415780f
added OpenGLTexture::SetClampingToZero()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2034
diff
changeset
|
228 |
a73a8415780f
added OpenGLTexture::SetClampingToZero()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2034
diff
changeset
|
229 |
a73a8415780f
added OpenGLTexture::SetClampingToZero()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2034
diff
changeset
|
230 void OpenGLTexture::SetClampingToZero() |
a73a8415780f
added OpenGLTexture::SetClampingToZero()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2034
diff
changeset
|
231 { |
a73a8415780f
added OpenGLTexture::SetClampingToZero()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2034
diff
changeset
|
232 glBindTexture(GL_TEXTURE_2D, texture_); |
a73a8415780f
added OpenGLTexture::SetClampingToZero()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2034
diff
changeset
|
233 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
|
234 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
|
235 |
a73a8415780f
added OpenGLTexture::SetClampingToZero()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2034
diff
changeset
|
236 GLfloat colorfv[4] = { 0, 0, 0, 0 }; |
a73a8415780f
added OpenGLTexture::SetClampingToZero()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2034
diff
changeset
|
237 glTextureParameterfv(texture_, GL_TEXTURE_BORDER_COLOR, colorfv); |
a73a8415780f
added OpenGLTexture::SetClampingToZero()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2034
diff
changeset
|
238 } |
2037
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
239 |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
240 |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
241 void OpenGLTexture::ConvertToOpenGLFormats(GLenum& sourceFormat, |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
242 GLenum& internalFormat, |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
243 GLenum& pixelType, |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
244 Orthanc::PixelFormat format) |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
245 { |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
246 switch (format) |
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 case Orthanc::PixelFormat_Grayscale8: |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
249 sourceFormat = GL_RED; |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
250 internalFormat = GL_RED; |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
251 pixelType = GL_UNSIGNED_BYTE; |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
252 break; |
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 case Orthanc::PixelFormat_RGB24: |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
255 sourceFormat = GL_RGB; |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
256 internalFormat = GL_RGB; |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
257 pixelType = GL_UNSIGNED_BYTE; |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
258 break; |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
259 |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
260 case Orthanc::PixelFormat_RGBA32: |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
261 sourceFormat = GL_RGBA; |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
262 internalFormat = GL_RGBA; |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
263 pixelType = GL_UNSIGNED_BYTE; |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
264 break; |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
265 |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
266 case Orthanc::PixelFormat_Float32: |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
267 sourceFormat = GL_RED; |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
268 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
|
269 pixelType = GL_FLOAT; |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
270 break; |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
271 |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
272 default: |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
273 throw Orthanc::OrthancException(Orthanc::ErrorCode_NotImplemented, |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
274 "No support for this format in OpenGL textures: " + |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
275 std::string(EnumerationToString(format))); |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
276 } |
d81a7157a846
added OpenGLTexture::ConvertToOpenGLFormats()
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
2036
diff
changeset
|
277 } |
579
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
278 } |
fadacfbf5538
OpenGL programs and textures
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
diff
changeset
|
279 } |