1 //
2 //   Copyright 2015 Pixar
3 //
4 //   Licensed under the Apache License, Version 2.0 (the "Apache License")
5 //   with the following modification; you may not use this file except in
6 //   compliance with the Apache License and the following modification to it:
7 //   Section 6. Trademarks. is deleted and replaced with:
8 //
9 //   6. Trademarks. This License does not grant permission to use the trade
10 //      names, trademarks, service marks, or product names of the Licensor
11 //      and its affiliates, except as required to comply with Section 4(c) of
12 //      the License and to reproduce the content of the NOTICE file.
13 //
14 //   You may obtain a copy of the Apache License at
15 //
16 //       http://www.apache.org/licenses/LICENSE-2.0
17 //
18 //   Unless required by applicable law or agreed to in writing, software
19 //   distributed under the Apache License with the above modification is
20 //   distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21 //   KIND, either express or implied. See the Apache License for the specific
22 //   language governing permissions and limitations under the Apache License.
23 //
24 
25 #ifndef OPENSUBDIV_EXAMPLES_GL_UTILS_H
26 #define OPENSUBDIV_EXAMPLES_GL_UTILS_H
27 
28 #include "glLoader.h"
29 
30 #include <cstdio>
31 #include <string>
32 #include <iostream>
33 
34 namespace GLUtils {
35 
36 void InitializeGL();
37 
38 void SetMinimumGLVersion(int argc=0, char **argv=NULL);
39 
40 void PrintGLVersion();
41 
42 void CheckGLErrors(std::string const & where = "");
43 
44 GLuint CompileShader(GLenum shaderType, const char *source);
45 
46 void WriteScreenshot(int width, int height);
47 
48 bool SupportsAdaptiveTessellation();
49 
50 // Helper function that parses the opengl version string, retrieving the
51 // major and minor version from it.
52 void GetMajorMinorVersion(int *major, int *minor);
53 
54 // Gets the shader version based on the current opengl version and returns
55 // it in a string form.
56 std::string GetShaderVersion();
57 
58 std::string GetShaderVersionInclude();
59 
60 bool GL_ARBSeparateShaderObjectsOrGL_VERSION_4_1();
61 
62 bool GL_ARBComputeShaderOrGL_VERSION_4_3();
63 
64 };
65 
66 #endif  // OPENSUBDIV_EXAMPLES_GL_UTILS_H
67 
68 
69