paroj / gltut Goto Github PK
View Code? Open in Web Editor NEWLearning Modern 3D Graphics Programming
Home Page: https://paroj.github.io/gltut/
License: MIT License
Learning Modern 3D Graphics Programming
Home Page: https://paroj.github.io/gltut/
License: MIT License
Originally reported by: Jason McKesson (Bitbucket: alfonse, GitHub: alfonse)
Finish the section on typographical conventions.
Originally reported by: Anonymous
I would love to see an appendix with a walkthrough on how to debug one of the tutorial's vertex/fragment shaders using a tool such as glslDevil or gDEBugger.
It would be enormously useful to be able to see the exact effect the perspective and model2camera transformations have on the matrices in a debugger and to also visualize fragment shader operations.
I've tried myself without success to debug several different Tutorial executables using both tools, I'm perhaps making a few assumptions that aren't true such as that they fully support the opengl 3.3 core profile and are aware of freeglut etc.
Peter
Originally reported by: Jason McKesson (Bitbucket: alfonse, GitHub: alfonse)
Add a section to Tutorial 05 on Z-fighting and how to deal with it.
Originally reported by: Jason McKesson (Bitbucket: alfonse, GitHub: alfonse)
Change many of the MathML equations to left-justify.
Originally reported by: Anonymous
Building tutorial 5 in VS2010 yields executables that simply produce white screens. If you resize the window the area outside the original window extent is black.
Instrumenting the display function in BaseVertexOverlap.cpp:
void display()
{
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT);
glUseProgram(theProgram);
std::cout << "glUseProgram\n";
glBindVertexArray(vao);
std::cout << "glBindVertexArray\n";
glUniform3f(offsetUniform, 0.0f, 0.0f, 0.0f);
glDrawElements(GL_TRIANGLES, ARRAY_COUNT(indexData), GL_UNSIGNED_SHORT, 0);
std::cout << "glDrawElements\n";
glUniform3f(offsetUniform, 0.0f, 0.0f, -1.0f);
glDrawElementsBaseVertex(GL_TRIANGLES, ARRAY_COUNT(indexData),
GL_UNSIGNED_SHORT, 0, numberOfVertices / 2);
std::cout << "glDrawElementsBaseVertex\n";
glBindVertexArray(0);
glUseProgram(0);
std::cout << "glUnUseProgram\n";
glutSwapBuffers();
std::cout << "glutSwapBuffers\n";
}
Yields the following output on the console:
glUseProgram
glBindVertexArray
glDrawElements
glUseProgram
glBindVertexArray
glDrawElements
Originally reported by: Trevor Fancher (Bitbucket: trevorfancher, GitHub: trevorfancher)
The code in tut1.cpp is correctly using glDetachShader, but you forget to use and discuss the reasoning for glDetachShader in Example 1.8 on http://arcsynthesis.org/gltut/Basics/Tut01%20Making%20Shaders.html
Originally reported by: Fejwin (Bitbucket: Fejwin, GitHub: Fejwin)
I downloaded the latest release and started building the required programs.
//FreeGlut 2.6.0//
Unfortunately the ./configure and make approach did not work for FreeGlut 2.6.0 with my MinGW. Instead I downloaded the official GLSDK. That GLSDK includes FreeGlut 2.6.0 and offers a premake4 file for it. That way I created a Code::Blocks project and compiled it. The output was two libs: libfreeglut.a and libfreeglutD.a. These I put into the \Tutorial 0.3.6\freeglut-2.6.0\lib directory.
//GLImg//
Here a premake4 file was present. Code::Blocks compiled libglimg.a and libglimgD.a into the \Tutorial 0.3.6\glimg\lib directory for me.
//GLLoad//
Here again premake 4 and Code::Blocks gave me the libglload.a and libglloadD.a files in the \Tutorial 0.3.6\glload\lib directory.
//TinyXML//
Finally, premake4 and Code::Blocks gave me libtinyxml_pm.a and libtinyxml_pmD.a in \Tutorial 0.3.6\tinyxml\lib.
After that I headed over to the \Tutorial 0.3.6\Tut 01 Hello Triangle folder, used premake4 and started the Code::Blocks workspace. When I try to compile that workspace (or any of the two projects framework and tutorial 1) I get these errors:
..\freeglut-2.6.0\include\GL\freeglut_std.h|60|warning: "NOMINMAX" redefined|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0\include\c++\mingw32\bits\os_defines.h|46|note: this is the location of the previous definition|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|225|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|226|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|227|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|228|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|229|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|230|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|231|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|232|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|233|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|234|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|235|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|236|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|237|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|238|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|239|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|240|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|241|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|242|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|243|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|244|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|245|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|246|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|247|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|248|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|249|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|250|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|251|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|252|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|253|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|254|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|255|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|256|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|257|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|258|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|259|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|260|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|261|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|262|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|263|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|264|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|265|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|266|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|267|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|268|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|269|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|270|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|271|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|272|error: 'GLAPI' does not name a type|
c:\mingw\bin..\lib\gcc\mingw32\4.5.0........\include\GL\glu.h|273|error: 'GLAPI' does not name a type|
||More errors follow but not being shown.|
||Edit the max errors limit in compiler options...|
||=== Build finished: 50 errors, 1 warnings ===|
Originally reported by: Jason McKesson (Bitbucket: alfonse, GitHub: alfonse)
It can be confusing.
Originally reported by: Shawn Walker (Bitbucket: binarycrusader, GitHub: binarycrusader)
Instead of basing this work on OpenGL 3.3, I'd like to suggest you base it on OpenGL 3.2.
While I realize that many platforms have OpenGL 3.3 available, OpenGL 3.2 is currently the max supported on OS X (and it has an excellent implementation of it).
The gltut materials are excellent, and generally work on OpenGL 3.2 with very little modification. (Mainly just removing use of the layout keyword, and using a different shader version.)
I don't see a particularly compelling reason to limit yourself to OpenGL 3.3 support, when OpenGL 3.2 allows you to fulfill all of the goals of writing about a modern graphics rendering pipeline.
Alternatively, a short section providing a summary of differences between OpenGL 3.2 and 3.3 would suffice for users following along.
Originally reported by: Jason McKesson (Bitbucket: alfonse, GitHub: alfonse)
Change the section in Tut10 that talks about the banding effect with close lights. It should talk about the optical illusion for linear gradients instead.
Originally reported by: Anonymous
Hello, I'm posting here since I did not see any other method of contact. I am getting an error when I try to run any of the tutorials. The console says:
"freeglut (./Test): glXCreateContextAttribsARB not found"
when I run the executables. This is probably very simple, but I need the help.
Thanks!
Originally reported by: Jason McKesson (Bitbucket: alfonse, GitHub: alfonse)
Right now, the SceneTexture constructor in the framework always uses GL_TEXTURE_2D. Once I make another SDK release, I should use the glimg function to get the texture type.
Originally reported by: Paweł Grabarz (Bitbucket: frizi09, GitHub: Unknown)
In the Basics/Introduction chapter on Figure 3 Vector B is slighty shifted. It should be [-5;2], but now it is [-4;2]. It can be confusing for some people.
Originally reported by: Anonymous
Thx for this fantastic tutorial.
I got an issue when compile tutorial 12 and so on with tinyxml included.
And I noticed we must switch on the STL support in the tinyxml.h.
Your included version seems did this, however it cost me lots of time to figure it out when I compile with recent tinyxml.
I need to add
to the first line of the tinyxml.h to make it compile.
Originally reported by: Jason McKesson (Bitbucket: alfonse, GitHub: alfonse)
Positioning/StripWindingOrder.svg doesn't render correctly in FireFox.
Originally reported by: Jason McKesson (Bitbucket: alfonse, GitHub: alfonse)
The gimbol lock tutorial needs to focus less on the issues of gimbol lock and a //lot// more on the issues of properly orienting the object. The lock should still be there, but it shouldn't just be about that.
Originally reported by: Alex Coplan (Bitbucket: acoplan, GitHub: acoplan)
Inside the project root I ran premake4 gmake
followed by make config=debug
, and got this error:
==== Building framework (debug) ====
framework.cpp
In file included from framework.cpp:17:
In file included from ../glsdk/freeglut/include/GL/freeglut.h:17:
../glsdk/freeglut/include/GL/freeglut_std.h:120:10: fatal error: 'GL/gl.h' file not found
#include <GL/gl.h>
^
1 error generated.
make[1]: *** [lib/Debug/framework.o] Error 1
make: *** [framework] Error 2
So I decided to try and build the glsdk:
cd glsdk
premake4 gmake
make config=debug
And I got this:
freeglut_callbacks.c
In file included from src/freeglut_callbacks.c:28:
In file included from include/GL/freeglut.h:17:
include/GL/freeglut_std.h:120:10: fatal error: 'GL/gl.h' file not found
#include <GL/gl.h>
^
1 error generated.
make: *** [obj/Debug/freeglut_callbacks.o] Error 1
Why can't it find that file?
I'm running OS X 10.7.4.
Originally reported by: Jason McKesson (Bitbucket: alfonse, GitHub: alfonse)
Incorporate the GL SDK into the build system, and update the documentation accordingly.
Originally reported by: Russell Lundberg (Bitbucket: rlundberg, GitHub: Unknown)
Hi Jason,
Thanks for the tremendous effort you've put into these tutorials.
I'm having trouble building the package. I've tried with both the 0.3.8 and 0.3.7 packages.
I'm using Windows 7 Ultimate 64-bit, Build environment is Cygwin/MinGW g++, presently from the command line, not using an IDE.
Before I copy the lengthy errors into this post let me ask a procedural question.
Is this the step-by-step procedure to build a package?
If these are the proper steps to follow then there is a problem that needs to be resolved.
Many thanks again for the wonderful tutorials.
Russell
Originally reported by: wesdec (Bitbucket: wesdec, GitHub: Unknown)
All tutorials segfault on my system (Ubuntu 10.04). Below is the gdb output.
Program received signal SIGSEGV, Segmentation fault.
0x00000000 in ?? ()
(gdb) where
#0 0x00000000 in ?? ()
#1 0x08051a13 in init () at tut1.cpp:133
#2 0x08052f11 in main (argc=1, argv=0xbffff3f4) at framework.cpp:158
Line 133 of tut1.cpp is this:
glGenVertexArrays(1, &vao);
Furthermore the output of glload::LoadFunctions(); in main() is 0.
Please let me know if I can assist in anyway.
Originally reported by: Jason McKesson (Bitbucket: alfonse, GitHub: alfonse)
Try to change vector arrowheads on MathML files to combining characters. Test with Chrome and IE9.
Originally reported by: Anonymous
Due to off again, on again, problems with gdb and gcc handling paths with spaces in windows(7.1 and 7.4 gdb http://sourceware.org/bugzilla/show_bug.cgi?id=12843 among others can't use a breakpoint in a file that has spaces in it or in the path), certain versions of gcc have trouble also, I took out the spaces(replacing them with underscores) in the directory names, the tutorial.lua, and the cpp files. This allows debugging and stepping through the tutorials without issues in any modern gdb.
Originally reported by: ekari (Bitbucket: ekari, GitHub: ekari)
Using 64-bit Arch Linux, the following happened in Tut 01, Tut 02, and Tut 03:
premake gmake
make
(compiling...)
Linking Tut 01 Main
/usr/bin/ld: ../glsdk/freeglut/lib/libfreeglutD.a(freeglut_main.o): undefined reference to symbol 'XPending'
/usr/bin/ld: note: 'XPending' is defined in DSO /usr/lib/libX11.so.6 so try adding it to the linker command line
/usr/lib/libX11.so.6: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
make[1]: *** [Tut 01 MainD] Error 1
make: *** [Tut 01 Main] Error 2
Then with the premake generated "Tut 01 Main.make", I changed:
LIBS += -lframeworkD -lglloadD -lglimgD -lglutilD -lglmeshD -lfreeglutD -lGL -lGLU
to
LIBS += -lX11 -lframeworkD -lglloadD -lglimgD -lglutilD -lglmeshD -lfreeglutD -lGL -lGLU
and after that everything ran as expected.
Originally reported by: Pfhreak (Bitbucket: Pfhreak, GitHub: Pfhreak)
Perhaps I'm wrong on the mechanics of C++, but isn't line 54 of the the framework.cpp file unreachable? It looks like you either return the new program or throw an exception and the for each statement will never be reached.
Originally reported by: Jason McKesson (Bitbucket: alfonse, GitHub: alfonse)
After upgrading to the new SDK, as well as fixing other code bugs, go through the code documentation and update it to match. This includes the text.
Originally reported by: Anonymous
I've used Premake4.3 to generate the project files for
codeblocks10.05(premake4 codeblocks) with the MinGW compiler
and successfully compiled the glsdk_0.4.1 and framework files
but all of the tutorials give me the same error.
ld.exe cannot find -lglloadD.
"Tut 01 MainD.exe" obj\Debug\tut1.o
-lframeworkD -lglloadD -lglimgD -lglutilD -lglmeshD -lfreeglutD
-ltinyxml_pmD -lglu32 -lopengl32 -lgdi32 -lwinmm -luser32
c:/program files (x86)/codeblocks/mingw/bin/../lib/gcc/mingw32/4.4.1/
../../../../mingw32/bin/ld.exe: cannot find -lglloadD
I thought it might be something simple because I'm not familiar with
codeblocks as I use devc++(which Premake doesn't generate files for) so
I tried using Visual Studio 2010 Express(premake4 vs2010) only to get
the exact same problem, everything builds except the tutorials.
Here is the error message I get for each tutorial.
LINK : fatal error LNK1104: cannot open file 'glloadD.lib'
Please help me resolve this problem, I wouldn't like to bother anyone
with what might be a simple newbie mistake but Ive been at it for over 13 hours.
Originally reported by: Anonymous
I can't seem to build the glsdk that comes with the tutorials.
Here's what I've done:
What am I missing here?
Originally reported by: Jason McKesson (Bitbucket: alfonse, GitHub: alfonse)
see title.
Originally reported by: Brandon Harvey (Bitbucket: sandover, GitHub: sandover)
Hi, I'm interested in the "Learning..." book in progress, so I cloned the repo today and installed premake4, lua5, freeglut, and then built tinyxml from within the repo. A few issues stopping progress at this point:
glimg directory mentioned at http://arcsynthesis.org/gltut/Building%20the%20Tutorials.html has been removed
premake at the top level doesn't work
~/src/gltut > premake4 premake4.lua
returns
cannot open /home/demo/src/gltut/glsdk/links.lua: No such file or directory
lua get_externals.lua
returns
lua: get_externals.lua:20: unexpected symbol near `=='
That's with lua 5. lua 4 returns the following instead:
error: =' expected; last token read:
script' at line 2 in file `get_externals.lua'
Originally reported by: Jason McKesson (Bitbucket: alfonse, GitHub: alfonse)
Put copyright information in all of my source files.
Originally reported by: Joseph Ciurej (Bitbucket: churay, GitHub: churay)
Greetings Mr. McKesson,
I've been trying to run through the first of your tutorials to make sure everything was running smoothly following installation. Unfortunately, I've run into a bit of an issue. Whenever I try to run the "Building Triangles" tutorial, I'm met with an error that reads as follows:
"Unable to start program '[file_path]\Tutorial 0.3.8\framework\lib\frameworkD.lib'. The specified file is an unrecognized or unsupported binary format."
I run into similar issues when trying to run the program in the "Test" directory (these are the only two I've tried to run thus far). I used Premake v4 to build the files in both the glsdk directory and the directories where I attempted to run the solution (Tutorial 1 and Test). I most likely made some form of error in setting up the projects, but I can't seem to find it. Do you have any advice? Thanks in advance for your help!
Originally reported by: Jason McKesson (Bitbucket: alfonse, GitHub: alfonse)
Be a bit more clear about the difference between world space and camera space. Possibly with a diagram.
Originally reported by: Jason McKesson (Bitbucket: alfonse, GitHub: alfonse)
Add the Rapid XML license to the framework. Remove the TinyXML license, and TinyXML itself for that matter.
Originally reported by: Jason McKesson (Bitbucket: alfonse, GitHub: alfonse)
For some reason, all my aspect ratio calculations use h/w instead of w/h. FIX THIS.
Originally reported by: Jason McKesson (Bitbucket: alfonse, GitHub: alfonse)
Go through the shader loading code for each tutorial and delete the shader objects after they are used.
Originally reported by: Jason McKesson (Bitbucket: alfonse, GitHub: alfonse)
Talk about how the camera matrix works.
Originally reported by: Nikos Platis (Bitbucket: nplatis, GitHub: nplatis)
framework.h uses some GL types (GLenum, GLint) but does not include any GL header. It should do so in order to be self-contained.
Originally reported by: Vlad Svoka (Bitbucket: Shchvova, GitHub: Shchvova)
Hello!
It is really hard to run your scripts, because LUA dependency "ufs" is really hard to resolve. Even google does not know anything about it... Is it possible to get link to this library?
Thank you
Originally reported by: Anonymous
Hi,
When I debug my program I found I cannot get the correct default camera, then I found MousePole set its default one which is conflict with my own camera matrix.
I think this should not happen, the Mouse function should not influence the default camera matrix from user.
#!C++
MousePole::MousePole(const glm::vec3 &target, const RadiusDef &radiusDef, ActionButtons eButton)
: m_lookAt(target)
, m_radCurrXZAngle(0.0)
, m_radCurrYAngle(/*-PI_2 / 2.0f*/0.0f) //modified here, cause confusing
, m_radCurrSpin(0.0f)
, m_fRadius(20.0f)
, m_radius(radiusDef)
, m_glutActionButton(0)
, m_bIsDragging(false)
cheers,
Jianming
Originally reported by: Thomas Grainger (Bitbucket: graingert, GitHub: graingert)
Tutorial 0.3.6/Tut 01 Hello Triangle$ premake --file premake4.lua
** premake4.lua: ../framework/framework.lua:5: attempt to call global 'solution' (a nil value)
** Script failed to run, ending.
Originally reported by: Jason McKesson (Bitbucket: alfonse, GitHub: alfonse)
Talk about camera-relative positioning (how we do the look at point) in greater detail.
Originally reported by: Jason McKesson (Bitbucket: alfonse, GitHub: alfonse)
See title.
Originally reported by: Jason McKesson (Bitbucket: alfonse, GitHub: alfonse)
Finish the section on typographical conventions.
Originally reported by: Jason McKesson (Bitbucket: alfonse, GitHub: alfonse)
Add a section in the Blinn area talking about the fact that point lights cause discontinuity when they “rise” over a surface. This is because they’re points rather than area lights.
Originally reported by: Anonymous
Replace
"Using nearest filtering within levels while filtering between levels"
with
"Using nearest filtering within texels while filtering between levels"
in http://arcsynthesis.org/gltut/Texturing/Tut15%20Needs%20More%20Pictures.html
Originally reported by: Jason McKesson (Bitbucket: alfonse, GitHub: alfonse)
Some of the older shaders use #version 150. Upgrade them to 330.
Originally reported by: ehuss (Bitbucket: ehuss, GitHub: ehuss)
The Chapter 3 tutorial for cpuPositionOffset.cpp says that it changed the call to glBufferData to use GL_STREAM_DRAW, but the source code is still using GL_STATIC_DRAW.
Originally reported by: Denis Hovart (Bitbucket: denzen, GitHub: denzen)
I have compiled everything without problem but I have an error that occurs at runtime when trying to launch the first tutorial :
//freeglut (./Tut 01 MainD): glXCreateContextAttribsARB not found//
I compiled everything using the following flags :
LDFLAGS="-L/usr/X11R6/lib -lX11 -lGLU -lGL -framework OpenGL -framework GLUT"
CPPFLAGS="-I/usr/X11R6/include"
CC="clang -emit-llvm"
I’m running Mac OS 10.7.3
Originally reported by: Anonymous
Given the following quote from the online opengl documentation for glDepthFunc:
"GL_LESS - Passes if the incoming depth value is less than the stored depth value."
Along with the following quotes from the Overlap and Depth Buffering tutorial page:
"When the test is true, the incoming fragment is written."
I don't believe the following sentence is correct (but would very much like to understand if I'm wrong):
"So GL_LESS means that, when the incoming fragment's depth is less than the depth from the depth buffer, the incoming fragment is not written."
Shouldn't it be?:
"So GL_LESS means that, when the incoming fragment's depth is less than the depth from the depth buffer, the incoming fragment is written."
.
As a beginner this is my understanding of the described depth comparison process:
Writing 1st wedge object
.
Writing 2nd wedge object
.
To me this process corresponds with the output image shown in Figure 5.3.
Thank you...
Originally reported by: Nikos Platis (Bitbucket: nplatis, GitHub: nplatis)
The error messages for tutorial 12 are
In file included from Lights.h:12:0,
from Lights.cpp:13:
../framework/Interpolators.h: In instantiation of ‘void Framework::ConstVelLinearInterpolator<ValueType>::SetValues(const BidirectionalRange&, bool) [with BidirectionalRange = std::vector<glm::detail::tvec3<float> >; ValueType = glm::detail::tvec3<float>]’:
Lights.cpp:66:35: required from here
../framework/Interpolators.h:183:5: error: ‘distance’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
Lights.cpp:38:7: note: ‘float distance(const vec3&, const vec3&)’ declared here, later in the translation unit
and similarly for
Lights.cpp:133:7: note: ‘float GetValue(const MaxIntensityData&)’ declared here, later in the translation unit
and
Lights.cpp:134:7: note: ‘float GetTime(const MaxIntensityData&)’ declared here, later in the translation unit
This is due to a change in (incorrect) behavior of gcc, as documented in http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29131
and the solution is to (at least) declare these functions before including "Lights.h" (or actually before including "../framework/Interpolators.h").
In tutorial 16 (LightEnv.cpp) this is accomplished by simply moving the #include "LightEnv.h" after the definition of distance().
In tutorial 12 (Lights.cpp) you could move all declarations of these functions at the top (just like in tutorial 16/LightEnv.cpp) and also move the #include "Lights.h" below them.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.