Compilnig .vert and .frag files VS2010

D.V.D

Make a wish
Reaction score
73
Hey guys I have VS 2010 pro version, I installed NShader (the most recent version), but I can't seem to be able to compile .vert and .frag files nor create them in VS2010. Is there any way to do this in VS2010? I know people create such files for shader code but I can't find a good explanation on google.
 

s3rius

Linux is only free if your time is worthless.
Reaction score
130
Those files aren't for you to compile. NShader is only a syntax highlighter, a program that colors the code so you have an easier time reading it.
Neither NShader nor Visual Studio can compile any kind of shader files.

Shaders are like the programs you write. They consist of code, but they have to be compiled by an application first (for example Visual Studio) before you actually get a real executable program.
However, the finished shader programs will be given to the GPU and be run there, not on the CPU.
That's why Visual Studio cannot compile them. VS knows how to compile code for the CPU, but it knows nothing about the GPU.
Instead you let the code get compiled by the graphics driver (for example OpenGL), then you upload it to the GPU.

Code:
//Create a OpengGL shader object of type Vertex Shader
GLuint vert = glCreateShader(GL_VERTEX_SHADER);
const char* source = "your source code here"; //Get the source code from the .vert file
glShaderSource(vert, 1, (const GLchar**)(&source), NULL); //Give it to the OpenGL driver
glCompileShader(vert); //Compile it
 
GLuint frag = glCreateShader(GL_FRAGMENT_SHADER);
//.. same thing as above, but for the fragment shader object
 
//Finally create a shader program
GLuint shaderProg = glCreateProgram();
glAttachShader(shaderProg, vert); //Give both shaders to the program
glAttachShader(shaderProg, frag);
glLinkProgram(shaderProg); //Link shader program
//Done
glUseProgram(shaderProg); //Activates program.

So instead of C++ (which you first compile and then run), you have to run your program in order to compile the shaders.

Compile your program -> Run your program -> Compile the shaders in your program -> Upload shaders to graphics card
 

D.V.D

Make a wish
Reaction score
73
I've written code to do that from a previous tutorial but that doesn't create .vert and .frag files. Instead, it reads a const char variable that pretty much is the shader code. The reason why I don't want to use a const char for the shader code is because of the \n\ after every line, it makes programming longer, and less readable. Do I have to write a notepad file and just give .frag or .vert at the end of it and treat it as a shader file by compiling it using the OpenGl code?
 

s3rius

Linux is only free if your time is worthless.
Reaction score
130
Do I have to write a notepad file and just give .frag or .vert at the end of it and treat it as a shader file by compiling it using the OpenGl code?
That's how it's usually done, yes.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top