Skip to content

Commit 1a3f18e

Browse files
committed
Move OSX version to GL core profile
1 parent ac55463 commit 1a3f18e

File tree

8 files changed

+86
-67
lines changed

8 files changed

+86
-67
lines changed

3rdparty/glfw/lib/x64/libglfw3.a

220 KB
Binary file not shown.

App/App.lua

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,26 @@
11
project "App"
22
kind "ConsoleApp"
33
location "../App"
4-
links {"RadeonRays", "CLW", "Calc", "glfw3"}
4+
links {"RadeonRays", "CLW", "Calc"}
55
files { "../App/**.inl", "../App/**.h", "../App/**.cpp", "../App/**.cl", "../App/**.fsh", "../App/**.vsh" }
66

7-
includedirs{ "../RadeonRays/include", "../CLW", ".", "../3rdparty/glfw/include"}
7+
includedirs{ "../RadeonRays/include", "../CLW", "."}
88

99
if os.is("macosx") then
1010
sysincludedirs {"/usr/local/include"}
11+
includedirs{"../3rdparty/glfw/include"}
1112
libdirs {"/usr/local/lib", "../3rdparty/glfw/lib/x64"}
12-
linkoptions{ "-framework OpenGL" }
13+
linkoptions{ "-framework OpenGL -framework CoreFoundation -framework CoreGraphics -framework IOKit -framework AppKit -framework QuartzCore" }
1314
buildoptions "-std=c++11 -stdlib=libc++"
14-
links {"OpenImageIO"}
15+
links {"OpenImageIO", "glfw3"}
1516
end
1617

1718
if os.is("windows") then
18-
includedirs { "../3rdparty/glew/include", "../3rdparty/freeglut/include", "../3rdparty/oiio/include" }
19-
links {"RadeonRays",}
19+
includedirs { "../3rdparty/glew/include", "../3rdparty/freeglut/include",
20+
"../3rdparty/oiio/include", "../3rdparty/glfw/include"}
21+
links {"RadeonRays"}
2022
if not _OPTIONS["benchmark"] then
21-
links {"glew", "OpenGL32"}
22-
23+
links {"glew", "OpenGL32", "glfw3"}
2324
end
2425
libdirs { "../3rdparty/glew/lib/%{cfg.platform}",
2526
"../3rdparty/freeglut/lib/%{cfg.platform}",

App/GLSL/simple.fsh

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,15 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
2020
THE SOFTWARE.
2121
********************************************************************/
2222

23+
#version 330
24+
2325
uniform sampler2D g_Texture;
2426

25-
varying vec2 Texcoord;
27+
smooth in vec2 Texcoord;
28+
29+
out vec4 OutputColor;
2630

2731
void main()
2832
{
29-
gl_FragColor = texture2D(g_Texture, Texcoord);
30-
}
33+
OutputColor = texture(g_Texture, Texcoord);
34+
}

App/GLSL/simple.vsh

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,12 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
2020
THE SOFTWARE.
2121
********************************************************************/
2222

23-
attribute vec3 inPosition;
24-
attribute vec2 inTexcoord;
23+
#version 330
2524

26-
varying vec2 Texcoord;
25+
layout (location=0) in vec3 inPosition;
26+
layout (location=1) in vec2 inTexcoord;
27+
28+
smooth out vec2 Texcoord;
2729

2830
void main()
2931
{

App/ImGUI/imgui_impl_glfw_gl3.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111

1212
#ifdef __APPLE__
1313
#include <OpenCL/OpenCL.h>
14-
#include <OpenGL/OpenGL.h>
14+
#include <OpenGL/gl3.h>
15+
#include "GLFW/glfw3.h"
1516
#elif WIN32
1617
#define NOMINMAX
1718
#include <Windows.h>

App/Renderers/PT/ptrenderer.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,6 @@ namespace Baikal
261261
bool aov_pass_needed = (FindFirstNonZeroOutput(false) != nullptr);
262262
if (aov_pass_needed)
263263
{
264-
int num_rays = tile_size.x * tile_size.y;
265264
FillAOVs(clwscene, tile_origin, tile_size);
266265
m_context.Flush(0);
267266
}

App/Utils/shader_manager.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,7 @@ THE SOFTWARE.
2424

2525
#ifdef __APPLE__
2626
#include <OpenCL/OpenCL.h>
27-
#include <OpenGL/OpenGL.h>
28-
#include <GLUT/GLUT.h>
27+
#include <OpenGL/gl3.h>
2928
#elif WIN32
3029
#define NOMINMAX
3130
#include <Windows.h>

App/main.cpp

Lines changed: 62 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ THE SOFTWARE.
2323

2424
#ifdef __APPLE__
2525
#include <OpenCL/OpenCL.h>
26-
#include <OpenGL/OpenGL.h>
26+
#define GLFW_INCLUDE_GL3
27+
#define GLFW_NO_GLU
28+
#include "GLFW/glfw3.h"
2729
#elif WIN32
2830
#define NOMINMAX
2931
#include <Windows.h>
@@ -33,6 +35,7 @@ THE SOFTWARE.
3335
#include <CL/cl.h>
3436
#include <GL/glew.h>
3537
#include <GL/glx.h>
38+
#include "GLFW/glfw3.h"
3639
#endif
3740

3841

@@ -98,6 +101,7 @@ std::unique_ptr<Baikal::PerspectiveCamera> g_camera;
98101
GLuint g_vertex_buffer;
99102
GLuint g_index_buffer;
100103
GLuint g_texture;
104+
GLuint g_vao;
101105

102106
int g_window_width = 512;
103107
int g_window_height = 512;
@@ -132,6 +136,8 @@ Baikal::Renderer::OutputType g_ouput_type = Baikal::Renderer::OutputType::kColor
132136

133137
using namespace tinyobj;
134138

139+
#define CHECK_GL_ERROR assert(glGetError() == 0)
140+
135141

136142
struct OutputData
137143
{
@@ -193,43 +199,50 @@ void Render(GLFWwindow* window)
193199
try
194200
{
195201
{
196-
glDisable(GL_DEPTH_TEST);
197-
glViewport(0, 0, g_window_width, g_window_height);
202+
int w, h;
203+
glfwGetFramebufferSize(window, &w, &h);CHECK_GL_ERROR;
204+
glDisable(GL_DEPTH_TEST);CHECK_GL_ERROR;
205+
glViewport(0, 0, w, h);CHECK_GL_ERROR;
206+
198207

199-
glClear(GL_COLOR_BUFFER_BIT);
208+
glClear(GL_COLOR_BUFFER_BIT);CHECK_GL_ERROR;
209+
glBindVertexArray(g_vao);CHECK_GL_ERROR;
210+
//glEnableClientState(GL_VERTEX_ARRAY);CHECK_GL_ERROR;
211+
212+
200213

201-
glBindBuffer(GL_ARRAY_BUFFER, g_vertex_buffer);
202-
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, g_index_buffer);
203214

204215
GLuint program = g_shader_manager->GetProgram("../App/GLSL/simple");
205-
glUseProgram(program);
216+
glUseProgram(program);CHECK_GL_ERROR;
206217

207218
GLuint texloc = glGetUniformLocation(program, "g_Texture");
208219
assert(texloc >= 0);
209220

210-
glUniform1i(texloc, 0);
221+
glUniform1i(texloc, 0);CHECK_GL_ERROR;
211222

212-
glActiveTexture(GL_TEXTURE0);
213-
glBindTexture(GL_TEXTURE_2D, g_texture);
223+
glActiveTexture(GL_TEXTURE0);CHECK_GL_ERROR;
224+
glBindTexture(GL_TEXTURE_2D, g_texture);CHECK_GL_ERROR;
214225

215-
GLuint position_attr = glGetAttribLocation(program, "inPosition");
216-
GLuint texcoord_attr = glGetAttribLocation(program, "inTexcoord");
217-
218-
glVertexAttribPointer(position_attr, 3, GL_FLOAT, GL_FALSE, sizeof(float) * 5, 0);
219-
glVertexAttribPointer(texcoord_attr, 2, GL_FLOAT, GL_FALSE, sizeof(float) * 5, (void*)(sizeof(float) * 3));
220-
221-
glEnableVertexAttribArray(position_attr);
222-
glEnableVertexAttribArray(texcoord_attr);
226+
227+
glEnableVertexAttribArray(0);CHECK_GL_ERROR;
228+
glEnableVertexAttribArray(1);CHECK_GL_ERROR;
229+
230+
glBindBuffer(GL_ARRAY_BUFFER, g_vertex_buffer);CHECK_GL_ERROR;
231+
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, g_index_buffer);CHECK_GL_ERROR;
223232

233+
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(float) * 5, 0);CHECK_GL_ERROR;
234+
glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, sizeof(float) * 5, (void*)(sizeof(float) * 3));CHECK_GL_ERROR;
224235
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, nullptr);
225236

226-
glDisableVertexAttribArray(texcoord_attr);
227-
glBindTexture(GL_TEXTURE_2D, 0);
228-
glBindBuffer(GL_ARRAY_BUFFER, 0);
229-
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
230-
glUseProgram(0);
237+
glDisableVertexAttribArray(0);CHECK_GL_ERROR;
238+
glDisableVertexAttribArray(1);CHECK_GL_ERROR;
239+
glBindTexture(GL_TEXTURE_2D, 0);CHECK_GL_ERROR;
240+
glBindBuffer(GL_ARRAY_BUFFER, 0);CHECK_GL_ERROR;
241+
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);CHECK_GL_ERROR;
242+
glUseProgram(0);CHECK_GL_ERROR;
243+
glBindVertexArray(0);
231244

232-
glFinish();
245+
glFinish();CHECK_GL_ERROR;
233246
}
234247
}
235248
catch (std::runtime_error& e)
@@ -243,17 +256,17 @@ void InitGraphics()
243256
{
244257
g_shader_manager.reset(new ShaderManager());
245258

246-
glClearColor(0.0, 0.0, 0.0, 0.0);
247-
glCullFace(GL_NONE);
248-
glDisable(GL_DEPTH_TEST);
249-
glEnable(GL_TEXTURE_2D);
259+
glClearColor(0.0, 0.5, 0.0, 0.0);CHECK_GL_ERROR;
260+
glDisable(GL_DEPTH_TEST);CHECK_GL_ERROR;
250261

251-
glGenBuffers(1, &g_vertex_buffer);
252-
glGenBuffers(1, &g_index_buffer);
262+
glGenBuffers(1, &g_vertex_buffer);CHECK_GL_ERROR;
263+
glGenBuffers(1, &g_index_buffer);CHECK_GL_ERROR;
264+
265+
glGenVertexArrays(1, &g_vao);CHECK_GL_ERROR;
253266

254267
// create Vertex buffer
255-
glBindBuffer(GL_ARRAY_BUFFER, g_vertex_buffer);
256-
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, g_index_buffer);
268+
glBindBuffer(GL_ARRAY_BUFFER, g_vertex_buffer);CHECK_GL_ERROR;
269+
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, g_index_buffer);CHECK_GL_ERROR;
257270

258271
float quad_vdata[] =
259272
{
@@ -270,21 +283,21 @@ void InitGraphics()
270283
};
271284

272285
// fill data
273-
glBufferData(GL_ARRAY_BUFFER, sizeof(quad_vdata), quad_vdata, GL_STATIC_DRAW);
274-
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(quad_idata), quad_idata, GL_STATIC_DRAW);
286+
glBufferData(GL_ARRAY_BUFFER, sizeof(quad_vdata), quad_vdata, GL_STATIC_DRAW);CHECK_GL_ERROR;
287+
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(quad_idata), quad_idata, GL_STATIC_DRAW);CHECK_GL_ERROR;
275288

276-
glBindBuffer(GL_ARRAY_BUFFER, 0);
277-
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
289+
glBindBuffer(GL_ARRAY_BUFFER, 0);CHECK_GL_ERROR;
290+
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);CHECK_GL_ERROR;
278291

279292

280-
glGenTextures(1, &g_texture);
281-
glBindTexture(GL_TEXTURE_2D, g_texture);
282-
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
283-
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
293+
glGenTextures(1, &g_texture);CHECK_GL_ERROR;
294+
glBindTexture(GL_TEXTURE_2D, g_texture);CHECK_GL_ERROR;
295+
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);CHECK_GL_ERROR;
296+
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);CHECK_GL_ERROR;
284297

285-
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, g_window_width, g_window_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr);
298+
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, g_window_width, g_window_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, nullptr);CHECK_GL_ERROR;
286299

287-
glBindTexture(GL_TEXTURE_2D, 0);
300+
glBindTexture(GL_TEXTURE_2D, 0);CHECK_GL_ERROR;
288301
}
289302

290303
void InitCl()
@@ -1078,13 +1091,13 @@ int main(int argc, char * argv[])
10781091
}
10791092
}
10801093
// Setup window
1081-
// glfwSetErrorCallback(OnError);
1082-
// glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
1083-
// glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
1084-
// glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
1085-
//#if __APPLE__
1086-
// glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
1087-
//#endif
1094+
glfwSetErrorCallback(OnError);
1095+
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
1096+
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
1097+
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
1098+
#if __APPLE__
1099+
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
1100+
#endif
10881101

10891102
// GLUT Window Initialization:
10901103
GLFWwindow* window = glfwCreateWindow(g_window_width, g_window_height, "Baikal standalone demo", nullptr, nullptr);

0 commit comments

Comments
 (0)