Skip to content

Instantly share code, notes, and snippets.

Bartłomiej Filipek fenbf

Block or report user

Report or block fenbf

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View HasToString.cpp
template <typename T>
class HasToString
{
private:
typedef char YesType[1];
typedef char NoType[2];
template <typename C> static YesType& test( decltype(&C::ToString) ) ;
template <typename C> static NoType& test(...);
@fenbf
fenbf / BasicParticles.cpp
Created Apr 27, 2014
Basic Particle classes design. Used as a starting point for my particle system. More details http://www.bfilipek.com
View BasicParticles.cpp
#include "particles.h"
#include <assert.h>
#include <algorithm>
namespace particles
{
void ParticleData::generate(size_t maxSize)
{
m_count = maxSize;
m_countAlive = 0;
@fenbf
fenbf / sfinae_tostring_ex.cpp
Created Feb 9, 2016
C++ SFINAE example: how to detect if a class contains ToString method
View sfinae_tostring_ex.cpp
// SFINAE, enable_if example
// based on http://stackoverflow.com/questions/257288/is-it-possible-to-write-a-c-template-to-check-for-a-functions-existence
#include <iostream>
#include <type_traits>
class ClassWithToString
{
public:
@fenbf
fenbf / glParticleRenderer.cpp
Last active Feb 4, 2018
particle rendering 'system'.
View glParticleRenderer.cpp
#include "glParticleRenderer.h"
#include "particles.h"
#include <assert.h>
#include "gl_includes.h"
namespace particles
{
void GLParticleRenderer::generate(ParticleSystem *sys, bool)
{
View LegacySinkAndUniquePtr.cpp
// compile at https://godbolt.org/g/yb47Aq
//
#include <iostream>
#include <memory>
class Widget
{
public:
void DoStuff() { }
View smart_ptr_deleters.cpp
// smart_ptr_deleters.cpp
// shows how to use custom deleters with unique_ptr and shared_ptr
// Bartlomiej Filipek, April 2016, bfilipek.com
#include <iostream>
#include <memory>
#include <functional>
#include <cassert>
// This class cannot be changed, might come from 3rd party library
@fenbf
fenbf / CalcTexPixels.cpp
Created Oct 30, 2013
Function that will go through all texture object levels and count pixel counts and memory in bytes. Currently only Compressed textures formats are supported and RGB8 (RGB) or RGBA8 (RGBA)
View CalcTexPixels.cpp
void CalculateTextureObjectPixels(GLuint texID, unsigned long *pixelCount, unsigned long *memoryUsed)
{
int baseLevel = 0, maxLevel = 0;
glGetTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, &baseLevel);
glGetTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, &maxLevel);
long pixels = 0, bytes = 0, bpp = 0;
int texW = 0, texH = 0, texFmt = 0, compressed = 0, compressedBytes = 0;
for (int level = baseLevel; level <= maxLevel; ++level)
{
View dbgheap.cpp
// simple perf test for memory allocations
// bfilipek.com
#include <iostream>
#include <memory>
#include <vector>
#include <chrono>
int main()
{
View ParticleUpdaters.cpp
namespace updaters
{
void EulerUpdater::update(double dt, ParticleData *p)
{
const glm::vec4 globalA{ dt * m_globalAcceleration.x, dt * m_globalAcceleration.y, dt * m_globalAcceleration.z, 0.0 };
const float localDT = (float)dt;
const unsigned int endId = p->m_countAlive;
for (size_t i = 0; i < endId; ++i)
p->m_acc[i] += globalA;
@fenbf
fenbf / BasicParticleUpdaters.cpp
Created May 12, 2014
Basic Particle Update modules
View BasicParticleUpdaters.cpp
#include "particleUpdaters.h"
#include <assert.h>
#include <algorithm>
#include <glm/common.hpp>
#include <glm/gtc/random.hpp>
namespace particles
{
namespace updaters
{
You can’t perform that action at this time.