#define USE_FORGE_CPU_COPY_HELPERS
#include <complex>
#include <cmath>
#include <vector>
#include <iostream>
const unsigned DIMX = 640;
const unsigned DIMY = 480;
const float PI = 3.14159265359;
const float MINIMUM = 1.0f;
const float MAXIMUM = 20.f;
const float STEP = 2.0f;
const int NELEMS = (MAXIMUM-MINIMUM+1)/STEP;
using namespace std;
void generateColors(std::vector<float>& colors)
{
static const float AF_BLUE[] = {0.0588f , 0.1137f , 0.2745f , 1.0f};
static const float AF_ORANGE[] = {0.8588f , 0.6137f , 0.0745f , 1.0f};
int numElems = NELEMS*NELEMS*NELEMS;
colors.clear();
for (int i=0; i<numElems; ++i) {
if ((i%2) == 0) {
colors.push_back(AF_ORANGE[0]);
colors.push_back(AF_ORANGE[1]);
colors.push_back(AF_ORANGE[2]);
} else {
colors.push_back(AF_BLUE[0]);
colors.push_back(AF_BLUE[1]);
colors.push_back(AF_BLUE[2]);
}
}
}
void generatePoints(std::vector<float> &points, std::vector<float> &dirs)
{
points.clear();
for (int k=0; k<NELEMS; ++k) {
float z = MINIMUM + k*STEP;
for (int j=0; j<NELEMS; ++j) {
float y = MINIMUM + j*STEP;
for (int i=0; i<NELEMS; ++i) {
float x = MINIMUM + i*STEP;
points.push_back(x);
points.push_back(y);
points.push_back(z);
dirs.push_back(x-10.0f);
dirs.push_back(y-10.0f);
dirs.push_back(z-10.0f);
}
}
}
}
int main(void)
{
wnd.makeCurrent();
chart.setAxesLimits(MINIMUM-1.0f, MAXIMUM,
MINIMUM-1.0f, MAXIMUM,
MINIMUM-1.0f, MAXIMUM);
chart.setAxesTitles("x-axis", "y-axis", "z-axis");
int numElems = NELEMS*NELEMS*NELEMS;
std::vector<float> points;
std::vector<float> colors;
std::vector<float> dirs;
generatePoints(points, dirs);
generateColors(colors);
do {
wnd.draw(chart);
} while(!wnd.close());
releaseGLBuffer(handles[0]);
releaseGLBuffer(handles[1]);
releaseGLBuffer(handles[2]);
return 0;
}
void * ComputeResourceHandle
A backend-agnostic handle to a compute memory resource originating from an OpenGL resource.
Definition ComputeCopy.h:73
@ FORGE_VERTEX_BUFFER
OpenGL Vertex Buffer Object.
Definition ComputeCopy.h:77
Chart is base canvas where other plottable objects are rendered.
Definition chart.h:316
VectorField is a line graph to display two dimensional data.
Definition vector_field.h:180
FGAPI unsigned vertices() const
Get the buffer identifier for vertices.
FGAPI unsigned directions() const
Get the buffer identifier for field direction per vertex values.
FGAPI unsigned verticesSize() const
Get the vertex buffer size in bytes.
FGAPI void setColor(const forge::Color pColor)
Set global color for the field lines.
FGAPI unsigned directionsSize() const
Get the directions buffer size.
FGAPI unsigned colorsSize() const
Get the colors buffer size in bytes.
FGAPI unsigned colors() const
Get the buffer identifier for color values per vertex.
Window is where other objects such as Images, Plots etc.
Definition window.h:300
@ FG_CHART_3D
Three dimensional charts.
Definition defines.h:119
@ f32
Definition defines.h:193
Definition ComputeCopy.h:80