Member 12908947 Ответов: 1

Как я могу построить точки в cuda с помощью opengl


у меня есть csv-файл с точками, и мне нужно взять эти значения и плюхнуться в куб, используя opengl в cuda . я уже начертил точки в кубе. но я не знаю, как это реализовать в cuda. мне нужна помощь.

Что я уже пробовал:

# include <cstdlib>
# включить <ctime>
# включить < cmath>
# включить <fstream>
# include <iostream>
# включить <iomanip>
# include <GL/glut. h>
# include & lt;string>
# включить <sstream>
# включить & lt;вектор>
# include & lt;string>
использование пространства имен std;

дисплей пустоты();
двойной rotate_y=0;
двойной rotate_x=0;
GLfloat xRotated, yRotated, zRotated;
двойной зум=0,5;



дисплей пустоты(){

glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glScalef(zoom, zoom, 1.0 f);
glTranslatef(0.0, 0.0,-10.5);
glRotatef(xRotated, 1.0, 0.0, 0.0);
glRotatef(yRotated, 0.0, 1.0, 0.0);
glRotatef(zRotated, 0.0, 0.0, 1.0);



glColor3f( 1, 1, 1 );
glBegin(GL_LINE_LOOP);
glVertex3f( 0.1, -0.01, -0.01 );
glVertex3f( 0.1, 0.1, -0.01 );
glVertex3f( -0.01, 0.1, -0.01 );
glVertex3f( -0.01, -0.01, -0.01 );
гленд();
glBegin(GL_LINE_LOOP);
glVertex3f( 0.1, -0.01, 0.1 );
glVertex3f( 0.1, 0.1, 0.1 );
glVertex3f( -0.01, 0.1, 0.1 );
glVertex3f( -0.01, -0.01, 0.1 );
гленд();
glBegin(GL_LINE_LOOP);
glVertex3f( 0.1, -0.01, -0.01 );
glVertex3f( 0.1, 0.1, -0.01 );
glVertex3f( 0.1, 0.1, 0.1 );
glVertex3f( 0.1, -0.01, 0.1 );
гленд();
glBegin(GL_LINE_LOOP);
glVertex3f( -0.01, -0.01, 0.1 );
glVertex3f( -0.01, 0.1, 0.1 );
glVertex3f( -0.01, 0.1, -0.01 );
glVertex3f( -0.01, -0.01, -0.01 );
гленд();


поплавок f1, f2, f3;

Файл *fp;
fp = fopen ("golgi. csv", " r");

пока (функции fscanf(ФП, "%г,%г,%г\п", &ампер;Формулы-1 &амп;Ф2, &ампер;Ф3) == 3)
{
glPointSize(7);
glColor3f( 0, 0, 1 );
glBegin(GL_POINTS);
glVertex3f( f1, f2, f3 );
гленд();
}
fclose(fp);
glFlush();
glutSwapBuffers();

}



анимация недействительным(ничтожным)
{

yRotated += 0.70;
xRotated += 0.03;
дисплей();
}


void reshape (int x, int y)
{
if (y == 0 || x == 0) return;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective (3.0, (GLdouble)x/(GLdouble)y, 0.8,50.0);
glMatrixMode(GL_MODELVIEW);
glViewport(0,0, x, y);

}


пустота мыши( кнопка int, инт государства, тип int х, int и г)
{
// Стрелка вправо-увеличение поворота на 5 градусов
если(состояние == GLUT_DOWN &ампер;&ампер; = кнопка= GLUT_RIGHT_BUTTON)
{
масштабирование - = 2,5;

}
остальное, если(состояние == GLUT_DOWN &ампер;&ампер; = кнопка= GLUT_LEFT_BUTTON)
{
масштабирование += 2,5;
}

glutPostRedisplay();

}


int main(int argc, char * * argv)
{
glutInit(& argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(1500, 1000);
glutCreateWindow ("удивительный куб");
glEnable(GL_DEPTH_TEST);
glutDisplayFunc (дисплей);
glutReshapeFunc(изменить форму);
glutIdleFunc (анимация);
glutMouseFunc (мышь);
glutMainLoop();
возвращает 0;

}

1 Ответов

Рейтинг:
0

Jochen Arndt

Ответ на этот вопрос был бы далеко за пределами намерения "быстрого ответа".

Вы можете взглянуть на Совместимость OpenGL с программированием игрового движка CUDA3D[^]:

Цитата:
В этой статье я расскажу о том, как можно использовать текстуры OpenGL и буферы в ядре CUDA.