TerraForge3D
Cross Platform Professional Procedural Terrain Generation & Texturing Tool (by Jaysmito101)
dirent
C/C++ library for retrieving information on files and directories (by tronkko)
TerraForge3D | dirent | |
---|---|---|
53 | 4 | |
910 | 1,013 | |
- | - | |
6.7 | 5.8 | |
3 months ago | 3 months ago | |
C++ | C | |
MIT License | MIT License |
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
TerraForge3D
Posts with mentions or reviews of TerraForge3D.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2021-11-02.
-
Procedural GPU based High Resolution(8K) Realtime Procedural Terrain Generation (Source in comments)
Sorry, but i have temporarily removed erosion system from the current working version for cleaning up the generator system and the last video I have of erosion in action are from a year ago. As for the node editor tough https://www.youtube.com/watch?v=Ej80EWo9DH4&t=4s&ab_channel=JaysmitoMukherjee is somewhat relevant but a lot has been added/improved. I will make more videos as things start getting together in this version. As for erosion in action I do have a image https://github.com/Jaysmito101/TerraForge3D/blob/gen2/Screenshots/Showcase/Volcano.png you can see slight effects of erosion. Also I will be sure to post the showcase for erosion/other features here as they are ready.
- TerraForge3D(opensource procedural terrain generation, texturing, shader making tool) major update. (added blender like shader node editor and Linux support) (source in comments)
-
TerraForge3D(opensource procedural terrain generation, texturing, shader making tool) major update. (added blender like shader node editor and Linux support)
Download TerraForge3D : https://github.com/Jaysmito101/TerraForge3D
-
My Past 6 Months Learning OpenGL & Making TerraForge3D
GitHub Page : https://github.com/Jaysmito101/TerraForge3D
-
I got my first donation for my opensource project
For the past few months i have been developing https://github.com/Jaysmito101/TerraForge3D and recently i launched a patreon donations option https://www.patreon.com/jaysmito101 . And today some one finally joined as a patreo . It feels great!
dirent
Posts with mentions or reviews of dirent.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2022-05-06.
-
Iterate filesystem and store information in a struct array
#include #include #include #include #include #include #include typedef struct file_info { char *path; // ToDo: more info in the future } file_info; // Function prototypes bool is_special_file(const char *file); file_info **find_all_files(const char *root_dir); int find_files(const char *dir_path, file_info ***files, int *cap, int *cnt); file_info *file_info_new(const char *path); int main(int argc, char **argv) { find_all_files("/tmp/test"); // ToDo: Free all the memory correctly return 0; } file_info *file_info_new(const char *path) { file_info *file = malloc(sizeof(file_info)); if (!file) return NULL; file->path = path; return file; } file_info **find_all_files(const char *root_dir) { file_info **files = malloc(sizeof(file_info *)); int capacity = 1; int count = 0; int result = find_files(root_dir, &files, &capacity, &count); printf("Array cap: %d\n", capacity); printf("Array count: %d\n", count); printf("-------------------\n"); for (int i = 0; i < count; i++) { printf("%s\n", files[i]->path); } return files; } // Based on the implementation from https://github.com/tronkko/dirent int find_files(const char *dir_path, file_info ***files, int *cap, int *cnt) { char buffer[PATH_MAX + 2]; char *p = buffer; char *end = &buffer[PATH_MAX]; // Copy directory name to buffer const char *src = dir_path; while (p < end && *src != '\0') { *p++ = *src++; } *p = '\0'; // Open directory stream DIR *dir_stream = opendir(dir_path); if (!dir_stream) { printf("Failed to open %s (%s)\n", dir_path, strerror(errno)); return -1; } // Iterate all files/directories within the directory struct dirent *ent; while ((ent = readdir(dir_stream)) != NULL) { char *q = p; char c; // Get final character of directory name if (buffer < q) c = q[-1]; else c = ':'; // Append directory separator if not already there if (c != ':' && c != '/' && c != '\\') *q++ = '/'; // Append file name to current directory path src = ent->d_name; while (q < end && *src != '\0') { *q++ = *src++; } *q = '\0'; // Resize array if needed if (*cnt == *cap) { int realloc_size = (*cap) * 2; file_info **tmp_files = realloc(*files, realloc_size * sizeof(file_info *)); if (!tmp_files) exit(1); *cap *= 2; *files = tmp_files; } // Process every dirent type switch (ent->d_type) { case DT_LNK: { printf("[LINK] %s\n", buffer); (*files)[*cnt] = file_info_new(buffer); (*cnt)++; break; } case DT_REG: { printf("[FILE] %s\n", buffer); (*files)[*cnt] = file_info_new(buffer); (*cnt)++; break; } case DT_DIR: { if (!is_special_file(ent->d_name)) { printf("[DIR] %s\n", buffer); (*files)[*cnt] = file_info_new(buffer); (*cnt)++; find_files(buffer, files, cap, cnt); } break; } default: break; } } return 0; } bool is_special_file(const char *file) { if (strcmp(file, ".") != 0 && strcmp(file, "..") != 0) return false; return true; }
-
Iterate files/directories/subdirectories in C ?
Thanks for the reply. Yea, I wonder how I would go about implementing an iterative approach tho. I am currently working with the following implementation: https://github.com/tronkko/dirent/blob/master/include/dirent.h
-
How can you iterate up the directory tree until the program gets to the first?
You can use dirent for both if you include a compatibility shim for windows.
-
OGL - A Great Cross Platform OpenGL Base Library With Almost Everything OpenGL You might Ever need
dirent
What are some alternatives?
When comparing TerraForge3D and dirent you can also consider the following projects:
gltf - :eyeglasses: Go library for encoding glTF 2.0 files
imgui-node-editor - Node Editor built using Dear ImGui
plop - Consistency Made Simple
imgui - Dear ImGui: Bloat-free Graphical User interface for C++ with minimal dependencies
ImGuiColorTextEdit - Colorizing text editor for ImGui
TinyErode - A portable C++ library for simulating hydraulic erosion.
glm
libcake - Librairie en C
lexpp - Small Extremely Powerful Header Only C++ Lexical Analyzer/String Parser Library
mage - MAGE - Memgraph Advanced Graph Extensions :crystal_ball:
stb - stb single-file public domain libraries for C/C++