Posts Tagged ‘c++’
Here is a small piece of code that can be useful if you need to quickly generate traces (or log) in your apps:
class cLog
{
public:
cLog(char *logfile){};
static void trace(const char *s)
{ if(s) log << s << std::endl; };
static std::ofstream log;
};
std::ofstream cLog::log("c:\\app_log.txt");
Just use it as follows:
cLog::trace("this is a log");
cLog::trace("this is a second trace");
Voici un petit article sympa sur le codage d’un ray-traceur depuis zéro. Le code source du ray-traceur est fourni et est compréhensible. Donc si vous voulez vous plonger dans les entrailles d’un petit ray-traceur, c’est le moment.
L’article et le code source se trouvent ici: PixelMachine

The NVIDIA developer blog shows a way to include shaders codes to your
windows exe: blogs.nvidia.com/developers/2007/03/inlining_shader.html.
But this example is not fully operational. I slightly modified the code to make it totally operational (I compiled it on vc++ 6.0):
1) Add a define to your resource.h file:
#define IDF_SHADEFILE 1000
2) Add an entry in your resource.rc file:
IDF_SHADERFILE RCDATA DISCARDABLE "myShader.glsl"
3) Use the resource in your code:
HMODULE hModule = GetModuleHandle(NULL);
HRSRC hResource = FindResource(hModule, (LPCTSTR)IDF_SHADERFILE, RT_RCDATA);
if(hResource)
{
DWORD dwSize = SizeofResource(hModule, hResource);
HGLOBAL hGlobal = LoadResource(hModule, hResource);
if(hGlobal)
{
LPVOID pData = LockResource(hGlobal);
if(pData)
{
// Cast pData to a char * and you have your shader
char *shader_code = (char *)pData;
// Now do whatever you want with shader_code pointer.
// Do not forget that shader_code is not a zero-terminated string!
// Use dwSize to handle that.
}
}
}
