#define WIDTH 1024
#define HEIGHT 1024
+#define IMG_WIDTH 256
+#define IMG_HEIGHT 256
+
typedef struct _Scene_Data
{
Evas_3D_Scene *scene;
Evas *evas = NULL;
Evas_Object *background = NULL;
Evas_Object *image = NULL;
-Evas_Object *bg_image = NULL;
+Evas_Object *source = NULL;
static const float cube_vertices[] =
{
{
static float angle = 0.0f;
Scene_Data *scene = (Scene_Data *)data;
+ unsigned int *pixels;
+ int i, j, stride;
angle += 0.5;
if (angle > 360.0)
angle -= 360.0f;
+ pixels = (unsigned int *)evas_object_image_data_get(source, EINA_TRUE);
+ stride = evas_object_image_stride_get(source);
+
+ for (i = 0; i < IMG_HEIGHT; i++)
+ {
+ unsigned int *row = (unsigned int *)((char *)pixels + stride * i);
+
+ for (j = 0; j < IMG_WIDTH; j++)
+ {
+ *row++ = rand() | 0xff000000;
+ }
+ }
+
+ evas_object_image_data_set(source, pixels);
+ evas_object_image_data_update_add(source, 0, 0, IMG_WIDTH, IMG_HEIGHT);
+
return EINA_TRUE;
}
data->material = evas_3d_material_add(evas);
data->texture = evas_3d_texture_add(evas);
- evas_3d_texture_source_set(data->texture, bg_image);
+ evas_3d_texture_source_set(data->texture, source);
+ evas_3d_texture_source_visible_set(data->texture, EINA_TRUE);
evas_3d_material_enable_set(data->material, EVAS_3D_MATERIAL_AMBIENT, EINA_TRUE);
evas_3d_material_enable_set(data->material, EVAS_3D_MATERIAL_DIFFUSE, EINA_TRUE);
evas_object_show(background);
/* Add a background imageg. */
- bg_image = evas_object_image_filled_add(evas);
- evas_object_image_file_set(bg_image, "cube1.png", NULL);
- evas_object_move(bg_image, 0, 0);
- evas_object_resize(bg_image, WIDTH, HEIGHT);
- evas_object_show(bg_image);
+ source = evas_object_image_filled_add(evas);
+ evas_object_image_size_set(source, IMG_WIDTH, IMG_HEIGHT);
+ evas_object_move(source, 0, 0);
+ evas_object_resize(source, IMG_WIDTH, IMG_HEIGHT);
+ evas_object_show(source);
/* Add an image object for 3D scene rendering. */
image = evas_object_image_filled_add(evas);